深入JavaScript与.NET Framework中的日期时间(2):JavaScript中的Date类型(上)
2010-09-14 13:31:07 来源:WEB开发网经过上面的代码之后,d1表示的是构造那一刻的时间。请注意它并不区分本地时间还是UTC时间,时间只有一个,UTC时间也好本地时间也罢,这只是同一个时间的不同表现形式而已。d2对象在构造时只接受了一个参数,因此这个参数将会被作为相对于UTC时间1970年1月1日0时整的偏移毫秒数,也就是time value。如果使用了多个参数来构造Date对象,则参数会被依次认作为年、月、日,直到最后个参数表示毫秒。除了年和月之外,所有的参数都是可选的,不提供的参数使用0作为其默认值。关于这个构造方式有两点是需要注意的:
“月份”从0开始计算:在JavaScript中,Date类型对象的Month值是从0开始计算的,也就是说使用0到11来表示1月到12月。因此上例的代码中构造的时6月4日而不是5月4日。这一点常常被人忽视,甚至会被认作是JavaScript的bug,其实这一点在Spec上写的清清楚楚。
参数表示的是本地时间信息:上例的代码所构造出的时间对象表示2007年6月6日0时整,请注意这是站在“本地时间”的角度来考虑的。例如,我在时区设置为UTC +8的系统上调用new Date(2007, 5, 6)构造出的其实是UTC时间2007年6月5日16点整。
我们通过new关键字并指定年、月、日等信息构造出的Date对象是基于本地时间的,那么我们该如何构造出一个有特定年、月、日等UTC时间信息的对象呢?我们只能间接地这么做,因为JavaScript只提供了一个Date.UTC方法,它的方法签名如下:
Date.UTC (year, month [, date [, hours [, minutes [, seconds [, ms ] ] ] ] ] )
这个方法的作用是根据指定的年、月、日等UTC时间信息,返回一个time value值,通过这个值,我们就可以使用上面的第二种方法来构造一个Date对象了,如下:
var d = new Date(Date.UTC(2007, 5, 6)); // 构造一个表示UTC时间2007年6月6日0时整的对象
一般来说,我们最常用的构造Date对象的方法就是上述这些。
Tags:深入 JavaScript NET
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接