API JEST WCF REST: сериализация DateTime в DataContractJsonSerializer - PullRequest
1 голос
/ 19 апреля 2011

Кто-нибудь знает, почему DataContractJsonSerializer сериализует свойства DateTime для включения часового пояса?у меня есть .NET DateTime для объекта, который сериализуется в JSON.Он сериализуется в 1303500600000 + 0000 вместо 1303500600000.

Это означает, что при десериализации DataContractJsonSerializer внутри клиентского приложения он будет преобразован в "местное" время.В действительности дата и время должны оставаться независимыми от часового пояса.

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Я столкнулся с точно такой же проблемой.Разрабатывал все локальное PST и отправлял на сервер EST, что, очевидно, вызывало некоторые забавные проблемы.Я так и не смог найти хорошее объяснение, почему это так, но это связано с DateTime.Kind.По умолчанию DateTimeKind для DateTime имеет значение Unspecified, которое сериализатор преобразует в «Local», добавляя, таким образом, смещение часового пояса.

Я решил обойти это, установив DateTime.Kind в UTC:

http://msdn.microsoft.com/en-us/library/shx7s921.aspx

Вот еще один ответ форума на вопрос:

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/0a6c84a3-5348-4ea0-b33f-eb411a2e1c97

Если DateTime.Kind имеет значение Utc, сериализатор исключает смещение TimeZone, и вы можете отслеживать все это самостоятельно и делать любые предположения на сервере и клиенте относительно TimeZone вашегодаты.

0 голосов
/ 13 декабря 2016

попробуйте это

yourDate.ToUniversalTime()

источник: здесь

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