Я ВОССТАНОВЛЕНИЕ поле DateTime из базы данных с помощью JSON в следующий синтаксис строки:разница часовых поясов в браузерах
2015-12-17T12:00:00
преобразовать его в дату, как показано ниже:
<script>
var myDate = new Date("2015-12-17T12:00:00");
document.write(myDate);
</script>
Проблема заключается в том, что Safari и Chrome предполагают, что это время UTC (это так, как я этого хочу), и IE предполагает, что это местное время.
Пример вывод из Chrome/Safari:
Thu Dec 17 2015 17:30:00 GMT+0530 (India Standard Time)
Пример вывод из IE Края/11/10
Thu Dec 17 2015 12:00:00 GMT+0530 (India Standard Time)
См Plunker здесь: http://plnkr.co/edit/tQAqmdWAuL8k0vGKPLCx?p=preview
Как я могу исправить это поведение?
Это правильно, хотя лучшим решением будет иметь фоновым включают Z во время сериализации. Большинство сериализаторов будут делать это при правильной настройке. Если вы дадите некоторые сведения о контенте, я могу предложить советы о том, как это сделать правильно. –
Мы используем ASP.Net Web API для возврата объектов C#. Объекты заполняются из базы данных с помощью Dapper. – navigator
По мере того как вы загружаете объекты 'DateTime' из базы данных, они, вероятно, будут иметь свойство' .Kind', установленное 'DateTimeKind.Unspecified' по умолчанию. Если они действительно соответствуют терминам UTC, используйте 'DateTime.SpecifyKind' для установки' DateTimeKind.Utc' сразу при загрузке. Вы можете делать это вручную каждый раз или настраивать 'TypeHandler' в dapper, чтобы сделать это за вас. В качестве альтернативы, сохраните 'datetimeoffset' в SQL и используйте тип' DateTimeOffset' в .NET (со смещением, установленным на '+00: 00' для UTC). В любом случае, после завершения сериализации в JSON.net правильно добавьте 'Z' или смещение. –