2012-01-16 18 views
1

はIテストデシベルなぜ自動的にISODateに変換しますか?シェル上

post = {"title" : "My Blog Post", "content" : "Here's my blog post.", ... "date" : new Date()} 

に試みたが、私が試したとき

db.blog.find(); 

ISODateとしてその与えてくれ出力

{ "_id" : ObjectId("4f13fdc4af1aaf90a686f8ae"), "title" : "My Blog Post", "content" : "Here's my blog post.", "date" : ISODate("2012-01-16T10:35:54.985Z") } 

なぜその上映日時コマンド

を使用して、それを取得するために? ?新しい日付()がjsで返される日付だけを保存することはできますか?

答えて

1

ISODateは、javascriptのDateコンストラクタをラップするシェルのヘルパ関数です。 ISODate()new Date()を呼び出すと、まったく同じDateオブジェクトが生成されるはずです。別の方法で印刷されます。

> var date = new Date(2012,01,16,10,35,54,985) 
> var isodate = ISODate("2012-01-16T10:35:54.985Z") 
> date.constructor == isodate.constructor 
true 

> date.constructor 
function Date() { 
    [native code] 
} 
> isodate.constructor 
function Date() { 
    [native code] 
} 

しかし:あなたがそれらを構築するために、まったく同じミリ秒を使用している場合

> date.valueOf() 
1329384954985 
> isodate.valueOf() 
1326710154985 
> 

は、しかし、彼らは同じです:

> date = new Date(isodate.valueOf()) 
> print(date) 
Mon Jan 16 2012 11:35:54 GMT+0100 (CET) 
> date.valueOf() == isodate.valueOf() 
true 
+0

ので、新しい日付(2012,01,16,10、 35,54,985)はISODate( "2012-01-16T10:35:54.985Z")に等しいか? – coure2011

+1

Javascript Dateが奇妙なので、実際はありません。まず、Dateの前に "new"キーワードを使用するか、文字列を返すだけです。第2に、Dateは月に0〜11を使用するため、Dateを使用するときは1ではなく0を使用する必要があります。しかし、ISODateはDateのファクトリメソッドに過ぎないため、同等の引数値を使用する場合は、同じ意味で使用できます。 –

関連する問題