Convertir UTC DateTime en DateTimeOffset
J'ai besoin de convertir UTC
date de chaînes à DateTimeOffsets
.
Cela doit fonctionner avec un fuseau horaire différent de l'ordinateurs fuseau horaire.
E. g. ordinateur actuel fuseau horaire est de +02:00, mais je veux créer un DateTimeOffset avec un décalage de -4:00.
J'ai déjà lu beaucoup de questions ici sur stackoverflow, mais aucun n'a résolu mon problème.
Qu'est ce que je dois faire:
D'entrée: "2012-11-20T00:00:00Z"
De sortie: DateTimeOffset avec:
- UtcDateTime de 2012-11-20 00:00
- le bon décalage Utc pour la définition du fuseau horaire (01:00 dans cet exemple)
- LocalDateTime: 2012-11-20 01:00 (= UtcDateTime + Offset)
De cours de l'heure d'été doit être pris en compte.
modifier:
Pour rendre les choses encore plus claires, s'il vous plaît essayer de compléter l'extrait de code suivant:
DateTimeOffset result;
const string dateString = "2012-11-20T00:00:00Z";
var timezone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); //this timezone has an offset of +01:00:00 on this date
//do conversion here
Assert.AreEqual(result.Offset, new TimeSpan(1, 0, 0)); //the correct utc offset, in this case +01:00:00
Assert.AreEqual(result.UtcDateTime, new DateTime(2012, 11, 20, 0, 0, 0)); //equals the original date
Assert.AreEqual(result.LocalDateTime, new DateTime(2012, 11, 20, 1, 0, 0));
source d'informationauteur Fabian
Vous devez vous connecter pour publier un commentaire.
Voici la solution que vous cherchez:
Note que vous avez été incorrectement test de la
.LocalDateTime
de propriété - qui est toujours va convertir le résultat le fuseau horaire local de l'ordinateur. Vous avez simplement besoin de la.DateTime
propriété plutôt.Est-ce que vous souhaitez:
DateTime.Parse()
Est-ce utile pour votre conversion:
De sortie est