Javascript дает неверную дату
Я получаю дату сервера (включая часовой пояс) из API. Я хочу преобразовать его в объект даты.
Когда я делаю это
var demo2 = new Date("THU JAN 19 15:37:56 PST 2017"); //It works!
var demo = new Date("FRI JAN 20 07:50:07 SGT 2017"); //Invalid date
Зачем? Если это SGT, то он не работает, но работает для PST
Я пытаюсь передать эту дату dateTimePicker
$datetimepicker.datetimepicker({
minDate: new Date(this.serverTime),
defaultDate: new Date(this.serverTime),
});
Как я могу решить эту проблему, используя Date / MomentJS?
3 ответа
В общем, вы никогда не должны анализировать сокращения часовых поясов. Они в лучшем случае противоречивы и часто неоднозначны.
Например, должен CST
имею в виду...
- Центральное стандартное время (UTC-6)
- Стандартное время Кубы (UTC-5)
- Стандартное время Китая (UTC+8)
Мне нужно сказать больше?
Если вы используете MomentJS, конструктор предполагает, что вы можете сделать что-то вроде этого.(Date String, Date Format, TimeZone)
Вы можете найти строки часового пояса здесь: http://momentjs.com/timezone/
В вашем случае вы ищете Сингапур, который: Asia/Singapore
Простой пример:
var date = moment.tz("Jay 20th 2017 8PM", "MMM Do YYYY hA", "Asia/Singapore");
Вот ссылка на документацию конструктора: http://momentjs.com/timezone/docs/
Вы пытались использовать этот формат:
new Date('1/20/2017 7:50:07 AM CST');
CST является тем же часовым поясом, что и SGT