Как WCF DataContractJsonSerializer десериализует json DateTime? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть 2 строки json для даты и времени, единственная разница - это смещенная часть, одна -08, другая -09:

"/Date(946713600000-0800)/"
"/Date(946713600000-0900)/"

Когда я десериализую их с помощью DataContractJsonSerializer

var serializer = new DataContractJsonSerializer(typeof(DateTime));

byte[] byteArray1 = Encoding.UTF8.GetBytes("\"\\/Date(946713600000-0800)\\/\"");
MemoryStream stream1 = new MemoryStream(byteArray1);
var datetime1 = serializer.ReadObject(stream1 );

byte[] byteArray2 = Encoding.UTF8.GetBytes("\"\\/Date(946713600000-0900)\\/\"");
MemoryStream stream2 = new MemoryStream(byteArray2);
var datetime2 = serializer.ReadObject(stream2 );

Результат суперразмеряет меня, datetime1 и datetime2 абсолютно одинаковы!оба являются {1/1/2000 12:00:00 AM}, datetime1.Kind и datetime2.Kind оба Local.

Я ожидаю, что у них разница в один час.Почему они такие же?

1 Ответ

0 голосов
/ 06 декабря 2018

Временная часть совпадает между двумя датами.Смещение, представленное в вашем примере как -0900 и -0800, является просто дополнительной информацией, которая обозначает смещение от UTC, в которое было записано местное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...