2013-11-08 2 views
0
new Date(moment().year(), moment().month(), moment().day(), vm.newHearing().HearingTime().split(":")[0], vm.newHearing().HearingTime().split(":")[1]).toLocaleString() 

Значение стороны клиента для столбца даты - 11/5/2013 10:15:00 AM. Время выбирается из управления вводом времени HTML5.Некорректное время работы JavaScript в таблице sql-сервера

Когда я проверяю в базе данных после сохранения сущности, он показывает мне неправильное значение времени: 11/5/2013 3:15:00 PM

+0

Разница в часовом поясе возможно? Значения даты и времени должны сохраняться в UTC в любом случае, может быть, это то, что он (правильно) делает? (То есть ... Является ли клиент в GMT -5?) – David

ответ

0

Вероятно, вы используете moment.js, это хорошо, кроме вас не использовать его правильно

Попробуйте вместо этого:

moment(vm.newHearing().HearingTime(), "HH:mm").toISOString() 

это пройдет заданное время, на текущий день, от пользователя local часовой пояс, конвертированный в UTC и в формате ISO.

Теперь это может быть не совсем то, что вы хотите сделать. В зависимости от ваших потребностей, вы можете вместо этого хотите:

moment.utc(vm.newHearing().HearingTime(), "HH:mm").toISOString() 

что почти то же самое, за исключением того, что он предполагает, что время входа уже в UTC.

Или вы можете захотеть этого:

moment(vm.newHearing().HearingTime(), "HH:mm").format("YYYY-MM-DDTHH:mm:ss") 

Это один не пытается преобразовать в UTC вообще.

Для всех вариантов я испускаю строку даты в формате ISO8601. Поскольку вы отправляете его обратно на сервер, это лучший выбор. Когда вы использовали toLocaleString, который генерирует формат, который подходит для только.

Смежные вопросы