Parsuję niektóre JSON w C# przy użyciu JSON.NET. Jedno z pól w JSON jest data/czas, tak:Jak zachować strefę czasową podczas deserializacji DateTime przy użyciu JSON.NET?
{
"theTime":"2014-11-20T07:15:11-0500",
// ... a lot more fields ...
}
Należy zauważyć, że część jest godzina 07:15:11 (TZ z GMT-5 godzin)
I analizować JSON ze strumienia jak ten:
using (var streamReader = new StreamReader(rcvdStream))
{
JsonTextReader reader = new JsonTextReader(streamReader);
JsonSerializer serializer = new JsonSerializer();
JObject data = serializer.Deserialize<JObject>(reader);
//...
}
Następnie otworzyć czas:
DateTime theTime = (DateTime)data["theTime"];
jednak to daje mi ten obiekt DateTime:
{20/11/2014 12:15:11}
Date: {20/11/2014 00:00:00}
Day: 20
DayOfWeek: Thursday
DayOfYear: 324
Hour: 12
Kind: Local
Millisecond: 0
Minute: 15
Month: 11
Second: 11
Ticks: 635520825110000000
TimeOfDay: {12:15:11}
Year: 2014
muszę wiedzieć oryginalnego czasu lokalnego i tz offset, ale wydaje się, że stracił tę informację w procesie deserializacji, a to daje mi czas na to, co przypuszczam jest mój czas lokalny (I” mw Wielkiej Brytanii, czyli obecnie na GMT + 0).
Czy istnieje sposób dla mnie, aby zachować informacje o strefie czasowej podczas deserializacji?
EDYCJA: dodano więcej szczegółów na temat deserializacji.
Jak się tworząc swój obiekt 'serializer'? – DavidG
Czy próbowałeś deserializacji/rzutowania go do DateTimeOffset zamiast DateTime? –
Zaktualizowałem wpis, aby pokazać, w jaki sposób tworzę obiekt serializera. –