Удалить информацию о часовом поясе при создании новой даты в Angular - PullRequest
0 голосов
/ 07 мая 2019

Следующая проблема, при попытке этой строки кода

console.log(JSON.stringify(new Date('2016-06-15 10:59:53.5055')));

я получаю "2016-06-15T08:59:53.505Z", однако я ожидаю "2016-06-15T10:59:53.505Z"

Как я могу удалить часовой пояс из new Date?

проблема в том, что я отправляю эту дату через http-сообщение в API.В команде http.post Дата строковая (прямо сейчас неверно)

Ответы [ 2 ]

1 голос
/ 07 мая 2019

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

var d = new Date('2016-06-15 10:59:53.5055');
    var timeZoneDifference = (d.getTimezoneOffset() / 60) * -1; //convert to positive value.
    d.setTime(d.getTime() + (timeZoneDifference * 60) * 60 * 1000);
    d.toISOString()
1 голос
/ 07 мая 2019

Нельзя удалить информацию о часовом поясе при создании объекта Date - это недостаток API.

Даты, созданные с помощью различных Date API, анализируются в соответствии с предоставленным часовым поясом (если данный метод поддерживает его), или, если он отсутствует, они предполагают часовой пояс вашего локального компьютера; затем внутренне они представлены в виде дат относительно часового пояса UTC.

Когда бы вы ни указывали дату, вы неявно вызываете date.toJSON(), который, в свою очередь, вызывает date.toISOString(), что переводит в относительное время UTC (следовательно, Z как конец, обозначающий Zulu, то есть UTC).

Насколько я могу судить, нет метода, который сериализует строку, подобную ISO, но использует местный часовой пояс. Вы можете использовать низкоуровневые свойства Date , чтобы написать свой собственный метод, который сериализует обратно в местный часовой пояс, если вам действительно нужно, или вы можете использовать библиотеку, подобную date-fns. Вы можете использовать библиотеку moment, но, несмотря на то, что она очень мощная, она огромна , поэтому будьте осторожны с ней.

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