Как преобразовать время PostgreSQL без часового пояса в дату в JavaScript? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть конечная точка API REST, использующая PostgreSQL, к которой я обращаюсь, и одно из полей - time without time zone.Конечная точка возвращает поле в виде читаемой человеком строки, например 20:33:32.221397.

Я хотел бы преобразовать это во внешнем интерфейсе в другую строку, например October 10, 2018 23:16, используя JavaScript, но объект Date() не поддерживает этот формат.

Я пробовал момент.jsи он выдает исключение, говоря, что формат не соответствует формату RFC.

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

Даже конструктор параметра 7 new Date() ожидает, что вторым аргументом будет месяцindex, который я не знаю.

Итак, библиотека JS подойдет, или я хотел бы узнать математику о том, как преобразовать эти части в метку времени.Остальное тривиально.Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Вам нужно что-то подобное?

function convertTime(apiTime) {
  var chunked = apiTime.split(":");

  var date = new Date();
  date.setHours(chunked[0]);
  date.setMinutes(chunked[1]);

  return moment(date).format('MMMM DD, YYYY H:mm');
}

convertTime("20:33:32.221397") // October 10, 2018 20:33

Вот песочница: https://jsfiddle.net/hxmrs92q/3/

0 голосов
/ 11 октября 2018

Хорошо.Я был дурак.Я понял, что тип TIME не содержит полей даты.Функция PHP, которая форматировала время, просто принимала часть даты.С тех пор я изменил свой тип на TIMESTAMP.

0 голосов
/ 11 октября 2018

На самом деле нет прямого способа проанализировать более 3 цифр для SSS во времени.Для справки, с моментом здесь возникла проблема

...