De string "20111027" converteren naar een DateTime met een tijdzone van GMT

Ik heb een string in dit formaat: "20111027", d.w.z. van het algemene formaat: "yyyyMMdd".

Hoe converteer ik dit naar een DateTime met de tijdzone GMT ?

Deze code voert enige conversie uit, maar het is onduidelijk welke tijdzone wordt gebruikt:

DateTime date = DateTime.ParseExact(dateString, "yyyyMMdd",
                               CultureInfo.InvariantCulture);
3

2 antwoord

Gebruik een DateTimeStyles van AssumeUniversal :

DateTime date = DateTime.ParseExact(dateString, "yyyyMMdd",
                                    CultureInfo.InvariantCulture,
                                    DateTimeStyles.AssumeUniversal);

Van de documenten van DateTimeStyles.AssumeUniversal :

Als er geen tijdzone is opgegeven in de geparseerde reeks, wordt aangenomen dat de tekenreeks een UTC is.

Klinkt als precies wat je wilt :)

(U kunt ook Noda Time gebruiken en deze parseren naar een LocalDate . Dit is alleen een datum na allemaal, dus waarom zou je een type gebruiken dat om tijd en tijdzones geeft? :)

5
toegevoegd

Uit de documentatie :

Als s geen tijd in een bepaalde tijdzone vertegenwoordigt en de ontleedbewerking slaagt, is de eigenschap Kind van de geretourneerde DateTime-waarde DateTimeKind.Unspecified .

U kunt de Kind wijzigen met de DateTime.SpecifyKind :

date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
5
toegevoegd