# JavaScript 生成日期对象的实例

**URL:** <https://www.isharkfly.com/t/javascript/8531>\
**Category:** 前端\
**Created:** [October 23, 2012, 2:50am UTC](https://www.isharkfly.com/t/javascript/8531 "2012-10-23T02:50:30Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 23, 2012, 2:50am UTC](https://www.isharkfly.com/t/javascript/8531/1 "2012-10-23T02:50:30Z")

</div>

Date 对象的构造函数通过可选的参数，可生成表示过去、现在和将来的Date 对象。

其构造方式有四种，分别如下：`var MyDate=new Date();
var MyDate=new Date(milliseconds);
var MyDate=new Date(string);
var MyDate=new Date(year,month,day,hours,minutes,seconds,milliseconds);`第一句生成一个空的Date 对象实例MyDate，可在后续操作中通过Date 对象提供的诸多方法来设定其时间，如果不设定则代表客户端当前日期；

在第二句的构造函数中传入唯一参数milliseconds，表示构造与GMT标准零点相距milliseconds毫秒的Date 对象实例MyDate；

第三句构造一个用参数string 指定的Date 对象实例MyDate，其中string 为表示期望日期的字符串，符合特定的格式；

第四句通过具体的日期属性，如year、month 等构造指定的Date对象实例MyDate。

考察如下的代码：[code]\<! DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0//EN”  
“[http://www.w3.org/TR/REC-html140/strict.dtd](http://www.w3.org/TR/REC-html140/strict.dtd)”\>

Sample Page!   
 [/code]程序运行结果如图所示。

 ![](https://com-ossez-www-discourse.s3.dualstack.us-east-2.amazonaws.com/discourse-uploads/original/2X/e/e169e6f86bfaa8c8176b9e1d4ed24afcae75846c.png)

该程序分为几步：  
（1）通过第四种构造方式构造代表2007 年9 月1 日17 点8 分20 秒100 毫秒的Date 对象实例MyDate4；  
（2）通过第一种构造方式构造空的Date 对象实例MyDate1，并通过对象拷贝的方法，将MyDate4 复制到MyDate1；  
（3）通过Date 对象的getTime()方法返回MyDate4 表示的时间与GMT 标准零点之间的毫秒数，然后将此毫秒数作为参数通过第二种构造方式构造Date 对象实例MyDate2；  
（4）通过Date 对象的toString()方法返回表示Date 对象实例MyDate4 代表的时间的字符串，然后将此字符串作为参数通过第三种构造方式构造Date 对象实例MyDate3。  
通过程序结果可知，上述四种构造 Date 对象实例的方式都能构造同样的日期对象。

但上述的四种构造方法都是以当地时间创建新日期，JavaScript 提供了UTC()方法按世界时间创建日期，语法如下：`date.UTC(year,month,day,hours,minutes,seconds,millseconds);`UTC()方法的参数意义与上述的第四种方法完全相同，只不过构建的对象基于UTC 世界时间而已，如下的代码显示两者的不同之处：`var MyDate=new Date();
msg+="本地时间："+MyDate.toString()+"\n";
msg+="世界标准时间："+MyDate.toUTCString();
document.write(msg);`上述代码的运行后，返回：

本地时间：Fri Aug 3 21:21:43 UTC+0800 2007

世界标准时间：Fri, 3 Aug 2007 13:21:43 UTC

可以看出两者之间的差异，本地时间（东8 区：北京时间）与UTC 世界标准时间之间相差8 小时，且输出字符串格式不同。

注意：欧美时间制中，星期及月份数都从 0 开始计数。如星期中第0 天为Sunday，第7 天为Saturday；月份中的第0 月为January，第11 月为December。

但月的天数从1 开始计数。
