Преобразовать строку даты в формат часовых поясов Postgres - PullRequest
0 голосов
/ 10 июля 2019

У меня есть следующая дата:

25-JAN-18 01.31.02 AM +00:00

и я пытаюсь конвертировать в формат Postgres timestamp with time zone.

Я пытаюсь преобразовать следующий код в совместимый формат:

document.getElementById("parsedDate3").innerHTML = moment("25-JAN-18 01.31.02.923526 AM +00:00 ", "d-MMM-YY hh.mm.ss A Z");

Но я получаю вывод как

Mon Jan 01 2018 02:31:02 GMT+0100

Может кто-нибудь, пожалуйста, помогите мне с этим.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Вы используете строчные буквы d для дня недели, от 0 (воскресенье) до 6 (суббота).

Вместо этого используйте прописные буквы D, что длядень месяца.

Обратите внимание, что токены форматирования Moment немного отличаются от других библиотек и языков, поэтому внимательно проверяйте таблицу в документации.

Также:

  • В вашем коде у вас есть 6 дополнительных цифр, следующих за секундами.Если вам необходимо учесть это, используйте SSSSSS.В противном случае они игнорируются.

  • Не следует назначать объект Moment непосредственно свойству innerHTML HTML-элемента.Вместо этого сначала вызовите функцию .format() объекта Moment, чтобы сгенерировать строку.Вы можете при желании передать аргумент этой функции для управления форматом вывода.

0 голосов
/ 10 июля 2019

Вы можете просто сделать это в PostgreSQL:

SELECT to_timestamp('25-JAN-18 01.31.02.923526 AM +00:00', 'DD-MON-YY HH.MI.SS.US AM TZH:TZM');

         to_timestamp      
-------------------------------
 2018-01-25 02:31:02.923526+01
(1 row)

Это будет работать для PostgreSQL v11 или лучше.

Более ранние версии to_timestamp пока не могут проанализировать информацию о часовом поясе.

Если вам нужно, чтобы он работал на 9.6, и вы знаете, что часовой пояс всегда будет +00:00, вы можете просто пропустить TZH:TZM в строке формата.

...