Javascript中Date对象的使用

简介:
JavaScript 没有一个基本的日期数据类型,所以我们只能显式地创建Date对象。我们创建新的Date对象和创建String对象的方式是一样的,使用关键字newDate构造函数。下面这行创建了一个包含当前日期和实践的Date对象:
var todaysDate = new Date();
为了创建一个存储一个特定日期或时间的Date对象,我们可以简单地把日期或日期与时间放到括号的内面:
var newMillennium = new Date( "1 Jan 2000 10:24:00" );
不同的国家使用不同的顺序来描述日期。举个例子,美国指定的日期格式是MM/DD/YY而欧洲的日期格式是DD/MM/YY在中国它们的格式是YY/MM/DD。如果你使用简写的名字指定月份,那么你可以以任意的顺序使用:
var someDate = new Date( "10 Jan 2002" );
var someDate = new Date( "Jan 10 2002" );
var someDate = new Date( "2002 10 Jan" );
实际上,Date对象可以拥有许多参数:
var someDate = new Date( aYear, aMonth, aDate,
anHour, aMinute, aSecond, aMillisecond )
要使用这些参数,你首先需要指定年份和月份,然后使用你需要的参数,可是你不得不按顺序逐个使用且不能在它们之间选择。举例来说,你可以指定年份,月份,日期和小时:
var someDate = new Date( 2003, 9, 22, 17 );
可是你不能指定年份,月份,然后指定小时:
var someDate = new Date( 2003, 9, , 17 );
                                                                                  
 
注解: 尽管我们通常认为九月(September)是第9个月份,但是JavaScript0(一月)开始计算月份,因此月份8表示九月
                                                                                  
 
2.1.1.1.1.   使用Date对象
Date对象拥有许多的方法,你可以用来获取或设置一个日期或时间。你可以使用本地时间 (你的电脑所在时区的时间或者UTC (全球标准时间,也叫格林威治标准时间)。 虽然这个可能非常有用,你要意识到当你处理Date的时候,许多人们并没有正确的设置他们的时区。让我们看一个例子,它展示了其中的一些方法:
<html>
<body>
<script type="text/javascript">
// Create a new date object
var someDate = new Date( "31 Jan 2003 11:59" );
// Retrieve the first four values using the
// appropriate get methods
document.write( "Minutes = " + someDate.getMinutes() + "<br>" );
document.write( "Year = " + someDate.getFullYear() + "<br>" );
document.write( "Month = " + someDate.getMonth() + "<br>" );
document.write( "Date = " + someDate.getDate() + "<br>" );
// Set the minutes to 34
someDate.setMinutes( 34 );
document.write( "Minutes = " + someDate.getMinutes() + "<br>" );
// Reset the date
someDate.setDate( 32 );
document.write( "Date = " + someDate.getDate() + "<br>" );
document.write( "Month = " + someDate.getMonth() + "<br>" );
</script>
</body>
</html>
下面是你会得到的结果:
                                                                                 
Minutes = 59
Year = 2003
Month = 0
Date = 31
Minutes = 34
Date = 1
Month = 1
                                                                                
 
代码的这一行第一眼看起来可能有点违反常规:
someDate.setDate( 32 );
JavaScript 知道在一月份中没有32天,因此解释器没有试着把日期设置为132日,而是从11日起数了32天,所以给我们返回了21日。
这是个非常方便的特性,如果你需要在一个日期上增加一些天数。通常如果我们想在一个日期上增加许多天,我们不得不考虑在不同的月份中的天数,还有是否是一个闰年,但是如果我们使用JavaScript的日期来处理则非常的容易:
<html>
<body>
<script type="text/javascript">
// Ask the user to enter a date string
var originalDate = prompt("Enter a date (Day, Name of
the Month, Year) ", "31 Dec 2003" );
// Overwrite the originalDate variable with a new Date
// object
var originalDate = new Date( originalDate );
// Ask the user to enter the number of days to be
// added, and convert to number
var addDays = Number( prompt( "Enter number of days
to be added", "1" ) )
// Set a new value for originalDate of originalDate
// plus the days to be added
originalDate.setDate( originalDate.getDate( ) + addDays )
// Write out the date held by the originalDate
// object using the toString( ) method
document.write( originalDate.toString( ) )
</script>
</body>
</html>
如果你在提示的时候输入31 Dec 2003(2003年12月31),还有1作为需要增加的天数,然后你会得到的结果是Thu Jan 1 00:00:00 UTC+0800 2004(星期四,200411,零点零分零秒)
                                                                                 
n         注解注意到在这个脚本的第三行中,我们使用了Math对象的Number()方法。如果我们不使用的话程序也能正常运行,但是结果会是不一样的。如果你不希望使用这个方法来转换不同的数据类型,那么有一个小技巧:一个使用parseInt(), parseFloat(),或者Number()函数可以转换成数字的字符串,如果你用它减去0,那么你就会把它转换成一个数字,如果你给一个数字上加一个空字符串,‘’,那么你就会把它转换成一个字符串,这个功能通常需要使用toString()来处理。
                                                                                 
 
在代码的第四行中,我们设置日期为originalDate.getDate()返回的值加上需要增加的天数计算出的结果,最后一行使用toString()方法以字符串的形式输出originalDate这个日期对象所包含的日期。如果你正在使用IE5.5以上版本或者以Gecko为基础的浏览器(Mozilla Netscape 6以上版本), 单独使用日期的toDateString()函数会产生一个格式化好的字符串。你可以使用同样的方法获取和设置日期。如果你正在使用UTC时间,所有你需要作的就是把UTC加到这个方法名上。 因此getHours()变为getUTCHours() setMonth()变为setUTCMonth(),以此类推。你也可以使用getTimezoneOffset()方法返回电脑的本地时间和UTC时间的小时差。(你不得不依赖用户已正确设置了它们的时区,并意识到不同国家之间的 夏时制差别。
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
注解:对于严格的日期处理,JavaScript可能并不是最合适的技术,因为你无法信任客户端的电脑都被适当正确地设定了 可是你可以使用服务端的语言来构成你的JavaScript脚本中的初始日期,达到同样的目的









本文转自 牛海彬 51CTO博客,原文链接:http://blog.51cto.com/newhappy/76829,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
JavaScript 前端开发
JavaScript Date(日期) 对象
JavaScript Date(日期) 对象
43 2
|
28天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
1月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
1月前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
2月前
|
JavaScript 前端开发
JavaScript Date
【10月更文挑战第06天】
59 18
|
2月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
38 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
42 1
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
21 2
|
2月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
32 2
|
2月前
|
存储 JavaScript 前端开发
js中的对象
js中的对象
21 3