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