Я разбираю некоторые JSON в C# с помощью JSON.NET. Одно из полей в формате JSON является дата/время, как это:Как сохранить часовой пояс при десериализации DateTime с использованием JSON.NET?
{
"theTime":"2014-11-20T07:15:11-0500",
// ... a lot more fields ...
}
Обратите внимание, что время часть 7:15:11 (TZ от GMT-5 часов)
я разобрать JSON из потока, как это:
using (var streamReader = new StreamReader(rcvdStream))
{
JsonTextReader reader = new JsonTextReader(streamReader);
JsonSerializer serializer = new JsonSerializer();
JObject data = serializer.Deserialize<JObject>(reader);
//...
}
Затем откройте время:
DateTime theTime = (DateTime)data["theTime"];
Однако, это дает мне этот объект 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
мне нужно знать исходное локальное время и TZ смещение, но я, кажется, потерял эту информацию в процессе десериализации, и это дает мне время, в том, что я полагаю, мое местное время (я м в Великобритании, поэтому в настоящее время в GMT + 0).
Есть ли способ сохранить информацию о часовом поясе при десериализации?
EDIT: дополнительная информация о том, как я десериализую.
Как вы создаете ваш 'объект serializer'? – DavidG
Вы пытались десериализовать/отбрасывать его на DateTimeOffset, а не на DateTime? –
Я обновил сообщение, чтобы показать, как я создаю объект serializer. –