Форматирование ISODate из MongoDB

В MongoDB я сохраняю дату и время в формате ISODate.

Что выглядит так

ISODate("2012-07-14T01:00:00+01:00")

Используя nodejs/javascript, как я могу отобразить компонент времени, чтобы получить что-то вроде этого

Time : 01:00

Я использую momentjs, чтобы сделать это проще, но, насколько я могу судить, momentjs, похоже, поддерживает формат ISODate.

Спасибо за помощь.


person jamjam    schedule 14.07.2012    source источник


Ответы (3)


Объект Date JavaScript поддерживает формат даты ISO, поэтому, если у вас есть доступ к строке даты, вы можете сделать что-то вроде этого:

> foo = new Date("2012-07-14T01:00:00+01:00")
Sat, 14 Jul 2012 00:00:00 GMT
> foo.toTimeString()
'17:00:00 GMT-0700 (MST)'

Если вам нужна строка времени без секунд и часового пояса, вы можете вызвать методы getHours() и getMinutes() для объекта Date и отформатировать время самостоятельно.

person Sarah Roberts    schedule 14.07.2012
comment
Я использовал momentjs для форматирования, но мне пришлось передать getFullYear, getMonth, getDate, getHours и getMinutes, сначала извлекая его из объекта даты, как вы сказали. - person jamjam; 15.07.2012
comment
Не анализируйте строки с помощью конструктора Date, это очень непоследовательно в разных реализациях. Хотя форматы ISO указаны в ES5, не все используемые браузеры поддерживают его, и существуют несоответствия в том, как они обрабатываются. Например. 2012-07-14T01:00:00+01:00 следует анализировать как локальную строку (т. е. с использованием системных настроек часового пояса), а 2012-07-14 следует анализировать как UTC. - person RobG; 10.02.2016

MongoDB ISODate() — это просто вспомогательная функция, которая обертывает объект даты JavaScript и упрощает для работы со строками даты ISO.

Вы по-прежнему можете использовать все те же методы, что и при работе с обычной датой JS, например:

ISODate("2012-07-14T01:00:00+01:00").toLocaleTimeString()

// Note that getHours() and getMinutes() do not include leading 0s for single digit #s
ISODate("2012-07-14T01:00:00+01:00").getHours()
ISODate("2012-07-14T01:00:00+01:00").getMinutes()
person Stennie    schedule 14.07.2012

вы можете использовать запрос монго, например, yearMonthDayhms: {$dateToString: {format: "%Y-%m-%d-%H-%M-%S", date: {$subtract:["$cdt",14400000] }}}

HourMinute: { $dateToString: { формат: "%H-%M-%S", дата: {$subtract:["$cdt",14400000]}}}

введите здесь описание изображения

person Jin Thakur    schedule 24.08.2016