2012-08-06 5 views
1

J'ai une application héritée qui utilise les informations de fuseau horaire de Windows pour calculer les dates. Par exemple, 35 = côte est, 20 = centre, 15 = montagne. Voici la fonction actuelle. Il prend une date avec un fuseau horaire et le convertit en fuseau horaire. Cela fonctionne très bien sur xp, mais il se bloque sous Windows 7. Je suppose que cela concerne la partie win32 ou Windows 7 gère les fuseaux horaires différemment .Problèmes de fuseau horaire VB.net

Je préférerais ne pas changer le format du fuseau horaire car cela pourrait causer des problèmes. Le code est vb.net et je ne l'ai pas écrit.

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 

Avez-vous déjà rencontré ce problème?

+0

.NET La raison pour laquelle il ne fonctionne pas pour quoi que ce soit après Windows XP devient le décalage horaire nécessite privliages élevée. C'est assez simple à faire dans l'écode. Bien sûr, vous n'avez pas besoin d'utiliser la fonction Win32 pour déterminer l'heure et le fuseau horaire du système. La bibliothèque Win32 fonctionne exactement de la même manière. –

Répondre

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

En VB.NET, vous devriez utiliser la classe suivante pour remplacer Win32TimeZone

MSDN TimeZone Class (System)

Référez-vous au lien ci-dessus pour i fourni voir la bonne façon d'utiliser la classe TimeZone en VB. NET.

Il semble ne pas wont travail en raison de TimZones.Win32.Win32TimeZone ne pas être une classe valide de

1

Cette bibliothèque Timezones n'est pas un dans le BCL .NET. Contactez l'auteur de votre bibliothèque Timezones pour obtenir de l'aide.