### Date类型 * * * * * > ECMAScript中的Date类型是在早期Java中的java.util.Date类基础上构建的,为此,Date类型使用自UTC(国际协调时间)1970年1月1日午夜零时开始经过的毫秒数来保存日期。在这种数据存储格式下,Data类型保存的日期能够精确到1970年1月1日之前或者之后的100000000年(可以数一数几个0, ) 要创建一个日期对象,使用new操作符合Date构造函数即可,如下所示: ~~~ let now = new Date() ~~~ > 在调用Date()构造函数而不传参的情况下,新建的对象自动获取当前日期和时间,如果根据特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数(即从UTC时间1970年1月1日午夜起至该日期经过的毫秒数)。为了简化这些操作,ECMAScript提供了两个方法:Date.parse()和Date.UTC()。 > 其中Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应的日期毫秒数,但是ECMA并没有规定这个方法应该支持那种日期,因此这个方法的行为实现是根据地区而异的,如果传入的字符串不能表示日期,那么他会返回一个NaN,实际上如果直接将表示日期的字符串传给Date函数也会调用Date.parse()方法。 > Date.UTC()方法同样也返回表示日期的毫秒数,但他与Date.parse()在构建值时使用不同的信息,Date.UTC()对参数分别是年份/基于0的月份(一月是0,二月是1,以此类推)/月中的那一天(1 - 31)/小时数(0 - 23) /分钟/秒/毫秒。在这些参数中,只有年和月是必须的,没有提供天,则假设天数为1;如果省略其他参数,则统统假设为0;如果第一个参数是数值,那么Date()函数也会模仿Date.UTC()方法,但有一点不同的是,Date()函数生成的时间是本地时间,而Date.UTC()方法生成的时间是GMT时间,如下: ~~~ let y = new Date(2000,0) // 本地时间的2000年1月1日午夜0时 let y = new Date(Date.UTC(2000,0)) // GMT时间的2000年1月1日午夜0时 let a = new Date(2005,4,5,14,13,15) // 本地时间的2005年4月5日14时13分15秒 let a = new Date(Date.UTC(2005,4,5,14,13,15)) // GMT时间的2005年4月5日14时13分15秒 ~~~ > ES5添加了一个Date.now()方法,返回这个方法调用时的系统时间,如下: ~~~ let a = Data.now() // a就是你的系统时间 ~~~