Js DATE类学习
在第4章中,我们讨论了JavaScript中的日期和时间,在JavaScript中,日期和时间是通过Date对象来描述的。我们还学习了Date对象的一些属性和方法,例如:
● Date对象的getDate()、getDay()、getMonth()和getFullYear()方法,用以从Date对象中获取相应的日期值。
● Date对象的setDate()、setMonth()和 setFullYear()方法,用以设置一个已有的Date对象相应的日期值。
● Date对象的getHours()、getMinutes()、getSeconds()和getMilliseconds()方法,用以从Date对象中获取相应的时间值。
● Date对象的setHours()、setMinutes()、setSeconds()和 setMilliseconds()方法,用以设置一个已有的Date对象相应的时间值。
但是在第4章中,我们并没有讨论时区的概念,即世界上不同的地理位置处于不同的时区。在本章中,我们将学习本地日期时间与世界时(world time)的关系,并修正前面所忽略的问题。
例如,假如在你的Web站点上具有一个聊天室,如果你想在某一指定的日期和时间组织一次聊天会。如果你的网站吸引了其他国家的访客,那么简单地将聊天会的时间定为15:30开始就不太好。这是因为15:30可以是美国东部标准时间,也可以是太平洋标准时间、或者是英国时间,甚至是吉隆坡时间。当然,我们也可以说明是15:30 EST,即美国东部标准时间15:30,然后让访客自己去计算他所在时区的时间,但这样做并非就能够万无一失,因为不但美国有东部标准时间(EST),澳大利亚同样也有EST。如果能自动地将该时间转换为访客所在时区的时间,那岂不是更好?在本章中,我们将介绍如何实现这种转换。
除了介绍世界时外,在本章中还将介绍如何在Web页面中创建计时器(timer)。使用计时器,可以每隔一定时间间隔就触发一次代码的执行,也可以在指定的时间间隔之后执行一次某段代码(例如,在页面加载之后5秒执行某段代码)。在本章中,我们将介绍如何使用计时器在Web页面上创建一个实时显示时间的时钟,以及利用计时器在浏览器窗口的状态栏中创建滚动的文本信息。在Web应用程序中,计时器是非常有用的,它还可以用来创建动画或者页面特效。最后,我们将把计时器应用在“在线小测试”程序中,以允许用户为回答问题设置一个时限。
9.1 世界时(World Time)
“现在”这个概念的含义指的是不同地点在此刻的同一时间。但是,此刻的时间是用数字来表示的,在不同的时区,该数字是不同的。因此,我们需要一种标准的时间值,来表示不同地点的同一时间。这就是协调世界时(Coordinated Universal Time,UTC),该标准于1964年执行,是国际性的民用和科学记时的基础。它的前身是格林尼治标准时间(Greenwich Mean Time,GMT),实际上,UTC时间0:00正是伦敦格林尼治的午夜。
表9-1显示了UTC时间0:00时,世界各地的本地时间:
表 9-1
圣弗朗西斯科
纽约(EST)
伦敦,格林尼治
德国,柏林
日本,东京
下午 4:00
下午 7:00
0:00 (午夜)
上午 1:00
上午 9:00
注意:
上表给出的是各地的冬季时间—— 夏令时没有考虑在内。
JavaScript中的Date对象提供了许多方法以支持UTC时间,这些方法与前面看到的那些日期时间的方法非常类似。对于每一个set或get类型的日期时间方法,都具有一个相应的UTC时间方法。例如,对于用以设置Date对象本地时间的小时值的setHours()方法,相应地具有一个setUTCHours()方法,用以设置UTC时间的小时值。在下面的小节中,我们将详细介绍这些方法。
另外,Date对象的很多方法都包含了对应于世界时的方法。
Date对象具有toUTCString()方法和toLocaleString()方法,toUTCString()方法将把Date对象中保存的UTC日期和时间以一个字符串的形式返回,而toLocaleString()方法将把Date对象中保存的本地日期和时间以一个字符串的形式返回。大部分现代浏览器都支持一些附加的方法,如toLocaleTimeString()、toTimeString()、toLocaleDateString()和toDateString()方法。
如果只想计算当前本地时间与UTC时间之间的差值,只需使用getTimezoneOffset()方法。如果当前时区在UTC之后,如美国的时区,getTimezoneOffset()方法将返回一个正数。如果当前时区在UTC之前,如澳大利亚或日本,则getTimezoneOffset()方法将返回一个负数。
下面的代码演示了Date对象的toLocaleString()、toUTCString()、getTimezoneOffset()、toLocaleTimeString()、toTimeString()、toLocaleDateString()和toDateString()方法的使用,并将相应的日期时间值输出在页面上。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>example</title>
<script language="JavaScript" type="text/javascript">
var localTime = new Date();
</script>
</head>
<body>
<h4>
UTC Time is
<script language="JavaScript" type="text/javascript">
document.write(localTime.toUTCString());
</script>
</h4>
<h4>
Local Time is
<script language="JavaScript" type="text/javascript">
document.write(localTime.toLocaleString());
</script>
</h4>
<h4>
Time Zone Offset is
<script language="JavaScript" type="text/javascript">
document.write(localTime.getTimezoneOffset());
</script>
</h4>
<h4>
Using toLocalTimeString() gives:
<script language="JavaScript" type="text/javascript">
if (localTime.toLocaleTimeString)
{
document.write(localTime.toL