2010-02-19 7 views
0

Nous avons une application Windows Mobile écrite en C# (framework compact). Le paramètre régional est défini sur (Anglais) Nouvelle-Zélande. Le fuseau horaire est défini sur GMT + 12 Nouvelle-Zélande.Problème lors de la conversion d'une date GMT en heure locale en utilisant C#?

Nous stockons nos dates en format GMT/UTC. Nous avons une date 2010-02-18 18:00:00 dans UTC

Cette fois en Nouvelle-Zélande est 07h00.

Lorsque nous appelons un objet datetime

starttime = starttime.ToLocalTime(); 

nous obtenons 9:00.
Que faisons-nous de mal?

+0

Avez-vous vérifié que 'starttime' est bien en GMT? –

+0

Si votre fuseau horaire est GMT + 12, est-ce que * 18.00 h * ne donnera pas * 6.00 h le jour suivant *? Ni 7h00 ni 9h00 ne semblent être la réponse * correcte *. * (confus ...) * – Treb

+0

@Treb: Je suppose que NZ est en été à la mi-février. Bizarre ... –

Répondre

3

Avez-vous spécifié le "kind" sur ce datetime? Quelque chose comme ceci:

DateTime parsedStartTime = DateTime.SpecifyKind(
    DateTime.Parse(starttime), 
    DateTimeKind.Utc); 

DateTime localStartTime = parsedStartTime.DateToLocalTime(); 

Cela pourrait aider car il pourrait ne pas savoir que le datetime vous est maintenant dans le type de Utc (il est probablement non spécifié).

Si cela ne vous aide pas, peut-être qu'une partie de votre code indiquant comment vous définissez le démarrage vous aidera.

+0

J'ai ajouté DateTimeStyles.AssumeUniversal à notre méthode ParseExact et fonctionne très bien. – Pentium10

+0

Heureux que ça a marché! –

Questions connexes