Получение даты и времени в виде строки в текущем часовом поясе - PullRequest
1 голос
/ 28 апреля 2020

В MySQL DB: '2020-04-19 22:00:00' (UT C). Это также то, что возвращает моя конечная точка, так как я установил опцию подключения dataStrings:true.

На клиенте, после того как я получу date:

const timezone = moment.tz.guess();

const convertedDate = moment(date)
   .tz(timezone)
   .format();

convertedDate, тогда равняется "2020-04-19T22:00:00+02:00" (Я нахожусь в зоне UTC + 2).

Вместо этого я хотел бы получить его в формате "2020-04-20T00: 00: 00". Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Вам не нужен момент-часовой пояс для этого. С самим Moment вы можете использовать функцию utc при разборе и функцию local для преобразования в местный часовой пояс пользователя перед форматированием.

moment.utc('2020-04-19 22:00:00').local().format()

//=> "2020-04-20T00:00:00+02:00"

Кроме того, команда Moment рекомендует использовать Moment для только существующие проекты. Для новых разработок мы рекомендуем использовать Luxon вместо:

luxon.DateTime.fromSQL('2020-04-19 22:00:00', {zone: 'utc'}).toLocal().toISO()

//=> "2020-04-20T00:00:00.000+02:00"
1 голос
/ 28 апреля 2020

Похоже, moment(date) считает, что ваше входящее значение date указано по местному времени, а не по UT C. Итак, преобразование вашего часового пояса в местное время ничего не меняет. Вы можете сказать moment это UT C, вот так:

const timezone = moment.tz.guess();

const convertedDate = moment.utc(date)
   .tz(timezone)
   .format();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...