На ту же дату из базы данных используется другой UT C Offeset от Backend до Frontend - PullRequest
0 голосов
/ 05 марта 2020

У меня возникла проблема с датой, полученной из MySQL База данных

После извлечения даты я создаю файл console.log на сервере:

console.log('Original Date: ', dip.nato_il);
console.log('Formatted Date: ', moment(dip.nato_il).format('YYYY-MM-DD'));
console.log('UTC Offset: ', moment(dip.nato_il).utcOffset());

, и это log log:

Original Date:  1961-09-07T22:00:00.000Z
Formatted Date:  1961-09-08
UTC Offset:  120

Таким образом, значение utfOffset является правильным для меня, а также для форматированной даты.

После этого console.log я отправляю данные для внешнего интерфейса с помощью res.send () из express, и я записываю ту же дату на консоли Chrome, и это результат записи:

Original Date:  1961-09-07T22:00:00.000Z
Formatted Date:  1961-09-07
UTC Offset:  60

Я не понял, почему это изменение смещения, только с этой датой, для Например, другая дата дает мне этот результат на beckend:

Original Date:  1990-08-18T22:00:00.000Z
Formatted Date:  1990-08-19
UTC Offset:  120

и это на Frontend:

Original Date:  1990-08-18T22:00:00.000Z
Formatted Date:  1990-08-19
UTC Offset:  120

Я пытаюсь войти в систему на консоли Chrome тоже:

console.log('1961 ---> ', moment('1961-09-07T22:00:00.000Z').utcOffset());  // Log result "1961 --->  60"
console.log('1962 ---> ', moment('1962-09-07T22:00:00.000Z').utcOffset());  // Log result "1962 --->  60"
console.log('1963 ---> ', moment('1963-09-07T22:00:00.000Z').utcOffset());  // Log result "1963 --->  60"
console.log('1964 ---> ', moment('1964-09-07T22:00:00.000Z').utcOffset());  // Log result "1964 --->  60"
console.log('1965 ---> ', moment('1965-09-07T22:00:00.000Z').utcOffset());  // Log result "1965 --->  60"
console.log('1966 ---> ', moment('1966-09-07T22:00:00.000Z').utcOffset());  // Log result "1966 --->  120"
console.log('1967 ---> ', moment('1967-09-07T22:00:00.000Z').utcOffset());  // Log result "1967 --->  120"
console.log('1968 ---> ', moment('1968-09-07T22:00:00.000Z').utcOffset());  // Log result "1968 --->  120"
console.log('1969 ---> ', moment('1969-09-07T22:00:00.000Z').utcOffset());  // Log result "1969 --->  120"
console.log('1970 ---> ', moment('1970-09-07T22:00:00.000Z').utcOffset());  // Log result "1970 --->  120"
console.log('1971 ---> ', moment('1971-09-07T22:00:00.000Z').utcOffset());  // Log result "1971 --->  120"
console.log('1972 ---> ', moment('1972-09-07T22:00:00.000Z').utcOffset());  // Log result "1972 --->  120"
console.log('1973 ---> ', moment('1973-09-07T22:00:00.000Z').utcOffset());  // Log result "1973 --->  120"

Почему с какой-то датой получается только 1 час вместо 2?

Сервер основан на NodeJs, с Express, как инфраструктура маршрутизации, для получения данных из БД я использую Objectio Js с knex Js. Момент - это модуль узла, используемый для управления датой. Сервер находится во Франкфурте, а я в Италии, поэтому часовой пояс такой же.

Спасибо за все!

1 Ответ

1 голос
/ 05 марта 2020

Ваш регион, Италия, начал наблюдать летнее время в 1966 году. Соответственно, смещение часового пояса для дат в сентябре изменилось в этом году.

https://www.timeanddate.com/time/zone/italy/rome?year=1960

Данные zoneinfo , встроенные в момент-часовой пояс и другие места, содержат удивительное количество временной политики.

...