2012-07-14 21 views
21

Mongodbでは、日付と時刻をISODate形式で保存しています。 nodejs/JavaScriptを使用して、このMongodbからのISODateのフォーマット

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

のように見えます

、私はこの

Time : 01:00 

のようなものになるだろうので、私は時間コンポーネントを表示することができますどのように私はこれを容易にするためにmomentjsを使用していますが、私はmomentjsがISODate形式をサポートしているように見えるからです。

ありがとうございました。

答えて

25

のJavaScriptのDateオブジェクトは、その限り、あなたは日付文字列へのアクセス権を持っているとして、あなたはこのような何かを行うことができ、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)' 

あなたは秒とせずに時間文字列をしたい場合時間帯を指定すると、Dateオブジェクトに対してgetHours()メソッドとgetMinutes()メソッドを呼び出し、自分で時間をフォーマットできます。

+0

私は、書式設定を行うためにmomentjsを使用していますが言ったように最初の日付オブジェクトから抽出してのgetFullYear、getMonth、のgetDate、次に、getHoursメソッドとgetMinutesに合格しなければなりませんでした。 – jamjam

+0

文字列をDateコンストラクタで解析しないでください。実装全体では非常に矛盾しています。 ISO形式はES5で指定されていますが、使用されているすべてのブラウザでサポートされているわけではなく、扱い方に矛盾があります。例えば。 「2012-07-14T01:00:00 + 01:00」(すなわち、システムのタイムゾーン設定を使用して)ローカル文字列として解析されるべきであるが、「」2012-07-14" はUTCとして解析されるべきです。 – RobG

28

MongoDBのISODate()は、JavaScriptの日付オブジェクトをラップし、ISOの日付文字列を扱いやすくするヘルパー関数です。 {$のdateToString::{フォーマット:「%Y-%M-%D-あなたはこの yearMonthDayhmsようMongoのクエリを使用することができます

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

あなたはまだのような、same methods as working with a normal JS Dateのすべてを使用することができます%H-%M-%S "、日付:{$ subtract:[" $ cdt "、14400000]}}}

HourMinute:{$ dateToString:{format:"%H-%M-%S " 、日付:{$減算:["$ 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); 
関連する問題