日期:2014-05-16  浏览次数:20403 次

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