mongo的date类型跟javascript的date类型一样,而javascript的date类型来源于java的java.util.Date,所以api基本一样,都有接收毫秒数的构造参数、获取毫秒数的getTime()。关于Date的用法有以下几个点
构造方法
无参构造
new Date()用来创建date对象,注意,new Date()不同于Date(),Date()只是调用了方法,没有创建对象,Date()方法返回时间字符串。
Date()
"Wed Oct 12 2016 20:31:34 GMT+0800 (中国标准时间)"
有参构造
Date提供了有参构造来接收参数,参数值是一个毫秒数整数值,表示从1970年1月1日子夜至今的毫秒数。因为计算毫秒数比较麻烦,所以Date提供了Date.UTC()和Date.parse()来返回毫秒数。
Date.parse()
Date.parse(string)参数是时间格式的字符串,一般来说按照 月/日/年 格式,也可以使用英语。
Date.parse("12/10/2016")
输出:1481299200000
var date = new Date(1481299200000)
输出:Sat Dec 10 2016 00:00:00 GMT+0800 (中国标准时间)
Date.UTC()
Date.UTC(年,月,日,时,分,秒,毫秒),UTC()方法也返回毫秒数,但是参数用来接收年、月、日、时、分、秒、毫秒。月的取值是0~11,这一点一定要注意;如果日不填,默认是1;其他默认是0。注意UTC()方法参数是不带有时区的,也就是说是GMT时间,由于在中国,所以创建的时间会多出8个小时。如
var d = new Date(Date.UTC(2016,9,20));
输出:Thu Oct 20 2016 08:00:00 GMT+0800 (中国标准时间)
从中很明显可以看出,多出8个小时。
日不填的情况,默认是1
var d = new Date(2016,9)
输出:"Wed Oct 12 2016 21:01:34 GMT+0800 (中国标准时间)"
为了简单起见,Date构造方法分别模仿了Date.parse()和Date.UTC(),
new Date("月/日/年") //模仿Date.parse()
new Date(年,月,日,时,分,秒,毫秒) //模仿Date.UTC()
但是Date(年,月,日,时,分,秒,毫秒) 与Date.UTC()不一样,Date(年,月,日,时,分,秒,毫秒) 带有时区,如
var d = new Date(2016,9,20);
输出:Thu Oct 20 2016 00:00:00 GMT+0800 (中国标准时间)
常用的方法
Date常用的方法就是返回年-月-日 时:分:秒格式的日期,
var date=new Date(2016,10,20);
date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()
输出:"2016-11-20 0:0:0"
mongo中的date
有了以上基础,就能懂mongo中的date了。一定要注意mongo中的date字段,数据类型是date,而不是字符串,所以mongo中查询时间字段时,应该使用new Date()
很明显,过滤掉了8月份的数据。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/20308.html