2012-08-06 141 views
1

我有一个遗留应用程序,它使用Windows时区信息来计算日期。例如,35 =东海岸,20 =中央,15 =山。这是当前的功能。它需要一个带时区的日期并将其转换为传入的时区。这在xp上运行得很好,但在Windows 7上崩溃。我猜测它与它的win32部分或Windows 7处理时区有关。VB.net时区问题

我不希望更改时区的格式,因为这可能会导致一些问题。代码是vb.net,我没有写它。

Public Shared Function ConvertTime(ByVal time As Date, ByVal timeZone As Integer) As Date 
     Dim UtcNow As Date = time.ToUniversalTime 

     Dim selectedTimeZone As TimeZones.Win32.Win32TimeZone = TimeZones.Win32.TimeZones.GetTimeZone(timeZone) 

     Return selectedTimeZone.ToLocalTime(UtcNow) 
    End Function 

任何人都有此问题吗?

+0

它不会为任何的Windows XP是获得时区后,工作的原因需要提升的privliages。这足够简单,可以在ecode内完成。当然,你不需要使用Win32函数来确定系统时间和时区。 Win32库的功能完全相同。 – 2012-08-06 19:02:35

回答

2
Dim selectedTimeZone As TimeZones.Win32.Win32TimeZone = 
TimeZones.Win32.TimeZones.GetTimeZone(timeZone) 

在VB.NET,你应该使用下面的类来代替Win32TimeZone

MSDN TimeZone Class (System)

请参考我上面提供看在VB中使用TimeZone类的正确方法的链接。净。

这似乎不是不会工作由于TimZones.Win32.Win32TimeZone不是一个有效类的.NET

1

Timezones库不在.NET BCL中。联系您的Timezones图书馆的作者寻求帮助。