2012-07-14 24 views
21

W Mongodb przechowuję datę i czas w formacie ISODate.Formatowanie ISODate z Mongodb

Która wygląda to

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

Korzystanie nodejs/javascript w jaki sposób można wyświetlić składnik czasu więc chciałbym dostać coś jak ten

Time : 01:00 

Używam momentjs aby to łatwiejsze, ale z tego co mogę powiedzieć, że instantjs wydaje się wspierać format ISODate.

Dzięki za pomoc.

Odpowiedz

25

obsługa JavaScript data obiekt obsługuje format daty ISO, tak długo, jak masz dostęp do napisu dat, można zrobić coś takiego:

> 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)' 

Jeśli chcesz ciąg razem bez sekund i Strefa czasowa to możesz wywołać metody getHours() i getMinutes() na obiekcie Date i samemu sformatować czas.

+0

Użyłem momentjs do formatowania, ale musiałem przekazać getFullYear, getMonth, getDate, getHours i getMinutes przez wyodrębnienie go z obiektu daty, jak powiedziałeś. – jamjam

+0

Nie parsuj ciągów za pomocą konstruktora Date, jest bardzo niespójny we wszystkich implementacjach. Chociaż formaty ISO są określone w ES5, nie wszystkie obsługiwane przeglądarki obsługują je i występują niespójności w sposobie ich traktowania. Na przykład. "2012-07-14T01: 00: 00 + 01: 00" powinien być analizowany jako lokalny ciąg znaków (np. Przy użyciu ustawień strefy czasowej systemu), ale "" 2012-07-14 "powinien być analizowany jako UTC. – RobG

28

MongoDB's ISODate() to tylko funkcja pomocnicza, która otula obiekt daty JavaScript i ułatwia pracę z ciągami znaków ISO.

Można nadal używać wszystkich same methods as working with a normal JS Date, takich jak:

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() 
1

można użyć kwerendy Mongo jak tego yearMonthDayhms: {$ dateToString: {format: „% Y-% m-% d- % H-% M-% S ", data: {$ odjęcie: [" $ cdt ", 14400000]}}}

HourMinute: {$ dateToString: {format:"% H-% M-% S " , data: {$ odejmowania: [ "$ CDT" 14400000]}}}

enter image description here

0
// from MongoDate object to Javascript Date object 

var MongoDate = {sec: 1493016016, usec: 650000}; 
var dt = new Date("1970-01-01T00:00:00+00:00"); 
    dt.setSeconds(MongoDate.sec); 
Powiązane problemy