03-构造Date对象
15.2 构造Date对象
Date 对象有4种构造方式。构造时不传任何参数(就像已经看到的),它就只会返回一个表示当前日期的 Date 对象。也可以传入一个会被JavaScript解析的字符串,或者传入一个用毫秒来表示的、特定(本地)的日期。下面是一些例子:
// 以下所有的解释均是本地时间
new Date(); // 当前日期
//注意,在JavaScript中月份是从0开始的: 0=1月, 1=2月, 以此类推
new Date(2015, 0); // 12:00 A.M., Jan 1, 1970 UTC
new Date(2015, 1); // 12:00:01 A.M., Jan 1, 1970 UTC
new Date(2015, 1, 14); // 5:00 P.M., May 16, 2016 UTC
new Date(2015, 1, 14, 13); // 3:00 P.M., Feb 14, 2015
new Date(2015, 1, 14, 13, 30); // 3:30 P.M., Feb 14, 2015
new Date(2015, 1, 14, 13, 30, 5); // 3:30:05 P.M., Feb 14, 2015
new Date(2015, 1, 14, 13, 30, 5, 500); // 3:30:05.5 P.M., Feb 14, 2015
// 从Unix新纪元时间戳创建日期
new Date(0); // 12:00 A.M., Jan 1, 1969 UTC
new Date(1000); // 12:00:01 A.M., Jan 1, 1969 UTC
new Date(1463443200000); // 5:00 P.M., May 16, 2016 UTC
// 使用负数日期获取早于Unix新纪元的日期
new Date(-365*24*60*60*1000); // 12:00 A.M., Jan 1, 1969 UTC
// 解析日期字符串(默认使用当地时间)
new Date('June 14, 1903'); // 12:00 A.M., Jun 14, 1903 local time
new Date('June 14, 1903 GMT-0000'); // 12:00 A.M., Jun 14, 1903 UTC
如果运行这些例子,会发现所有结果都是当地时间。除非处在UTC(比如,延巴克图、马德里、格林威治)时区,那么返回的时间会与本例有所不同。这也成为使用 Date 对象的主要障碍:没有办法指定时区。其实,在JavaScript内部,时间都是以UTC存储的,然后根据当地时间(由计算机的操作系统决定)进行格式化。由于JavaScript起初是一门基于浏览器的脚本语言,这种设定时间的方式历来都是“正确的做法”。当你用Date的时候,你可能希望日期显示为用户所在的时区。然而,由于网络全球化的普及,同时Node使JavaScript在服务端得到应用,更加健全的时区处理将会很有用。