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

Другие вопросы по тегам