使用日期和时间(日期对象)
我已经简单向你介绍了日期对象。日期对象有一些有用的方法来操作和获取日期和时间,下面是一些使用日期对象的方法的例子:
<%
mydate=new Date()
%>
<BR> The current date and time is:
<%=mydate%>
<BR> The current month is:
<%=mydate.getMonth()%>
<BR> The current day of the month is:
<%=mydate.getDate()%>
<BR> The current day of the week is:
<%=mydate.getDay()%>
<BR> The current year is:
<%=mydate.getYear()%>
<BR> The current hour is:
<%=mydate.getHours()%>
<BR> The current minute is:
<%=mydate.getMinutes()%>
<BR> The current second is:
<%=mydate.getSeconds()%>
注意你必须在获取任何日期或时间信息之前先建立一个日期对象,在这个脚本中,日期对象mydate在脚本的第一句中创建了。在创建了日期对象后,上述的每个方法都返回一个整数值。
要注意日期对象的大部分方法返回的值都是从0开始的,例如,一年中的第一个月是0而不是1。这可能会引起混乱,因为从常规来看,月份都比此方法返回的值要大1(从图9.2可见到这些方法返回的值)。
你也可以使用日期对象来操作任意的日期和时间,而不仅仅是当前日期和时间,要指定别的日期,只需在创建对象时把日期传给它。例如,要建立一个公元2000年7用4日的日期对象,你可以使用下列的脚本。
<%
iday=new Date(2000,6,4,3,27,13)
%>
<%=iday%>
传给日期对象的参数包括年、月、日、小时、分钟及秒,在此例中,创建的日期对象表示“2000年7用4日,3:27:13”,如果你不给小时、分钟、秒参数,它们就缺省地设为0,你可以使用用这种方法创建的日期对象中的任何一种先前讨论过的方法。
你也可以用一个表示时间的字符串作为日期对象的参数来创建它。例如,下面的脚本与上面的脚本的功能是一样的:
<%
iday=new Date(“July 4, 2000 3:27:13”)
%>
<%=iday%>
再一次说明,如果你不提供时、分、秒参数,它们就缺省地设为0,当执行这个脚本时,Tue Jul 04 03:27:13 2000就会显示在浏览器上。
图9.2 使用日期的方法返回的值
日期对象有很多设置部分日期和时间的方法,使用SetMonth()、SetDate()和SetYear()方法,你可以改变一个日期对象表示的月、日和年。使用SetHours()、SetMinutes()和SetSeconds()方法,你可以改变一个日期对象表示的小时、分钟和秒。
例如,假设有人在你的网点上注册,你希望此人的注册信息只在一个月内有效,你可以使用下面的脚本来显示过期日期:
<%
currentdate=new Date();
expiredate=new Date();
expiredate.setMonth(currentdate.getMonth()+1);
%>
<%=expiredate%>
在此例中,创建了两个日期对象,每个日期对象初始化都表示当前的日期和时间,接着SetMonth()方法用来设置距今一个月后的过期日期,最后,过期时间的值被显示在浏览器上。
警告
可能与你预计的相反,使用这个脚本来在一个日期上加一个月并不是加上30天,这个脚本只是简装地把月数加1,这意味着在注册的用户将会比在2月注册的用户多2至3天。要避免这种问题,你可通过SetDate()和getDate()方法来累计天数而不是月数。
日期对象在1970年1月1日午夜之后,才开始跟踪日期,对象表示所有与这个特定历史时刻相关的日期和时间。这是这个对象的一个奇特而又不方便的限制,有一个方法可以说明日期对象的这种特性,getTime()方法返回从1970年1月1日午夜开始到现在已过去的百分之一秒数。下面的脚本返回从1970年1月1日午夜到2000年7月4日午夜这段时间的百分之一秒数:
<%
iday=new Date(“July 4, 2000 3:27:14”);
%>
<%=iday.getTime()%>
此例中的getTime()方法返回从1970年1月1日到2000年7月4日之间的百分之一秒数(你对此一定很好奇,答案是962706434000)。所有的日期和时间都可以通过这种方法由日期对象来表示。
最后,日期对象还有两个方法对被本国或外国用户浏览的网点非常有用,getTimezoneOffSet()方法返回日期对象表示的时间与格林威治时间相差的分钟数,toGMTString()方法将日期和时间组织成格林威治标准格式,下面的例子说明了怎样使用这两种方法。
<%
mytime=new Date();
HoursFromGMT=mytime.getTimezoneOffset()/60;
%>
<BR> The current time is:
<%=mytime%>
<BR> The current Greenwich Mean Time is:
<%=mytime.toGMTString()%>
<BR> These times are separated by the following number of hours:
<%=HoursFromGMT%>