在mongodb中创建日期的时候使用不同的方式创建的日期是不同的。
在mongodb中使用Date()创建的日期类型是一个字符串的类型,这个字符串中包含时区等数据 。使用new Date()创建的将会是ISODate类型的一个日期对象。同样我们可以使用ISODate()方式去创建日期对象,得到的结果是使用new Date相同的。下面是我在电脑上测试的:
ISODate类型日期支持多种格式:
neu:PRIMARY> db.t2.insert({mydate:ISODate("2012-11-02 07:58:51")})
neu:PRIMARY> db.t2.insert({mydate:ISODate("20121102 07:58:51")})
neu:PRIMARY> db.t2.insert({mydate:ISODate("20121102")})
neu:PRIMARY> db.t2.find()
{ "_id" : ObjectId("50937ded0847cf5f01606dae"), "mydate" : ISODate("2012-11-02T07:58:51.718Z") }
{ "_id" : ObjectId("509380d22bb20f9946fb9004"), "mydate" : ISODate("2012-11-02T07:58:51Z") }
{ "_id" : ObjectId("509381052bb20f9946fb9005"), "mydate" : ISODate("2012-11-02T07:58:51Z") }
{ "_id" : ObjectId("509381102bb20f9946fb9006"), "mydate" : ISODate("2012-11-02T00:00:00Z") }
我们比较一下mongo中的当前时间与系统当前时间:
neu:PRIMARY> new Date()
ISODate(“2012-11-02T08:13:10.250Z”)
neu:PRIMARY> ^Z
bye
C:>date
当前日期: 2012-11-02 星期五
输入新日期: (年月日)
C:>time
当前时间: 16:13:14.95
输入新时间:
我们看到,mongo中的时间似乎与系统时间相差了8个小时,why?
这是因为mongo中的date类型以UTC(Coordinated Universal Time)存储,就等于GMT(格林尼治标准时)时间。而系统时间使用的是GMT+0800时间,两者正好相差8个小时。