在脚本中增加日期和时间函数

VBScript有许多函数，使你可以得到各种格式的日期和时间。你已经用过了这些函数中的一个。你可以用函数NOW返回当前的日期和时间：

At the tone,the time will bi: <%=NOW%>

你应该注意，返回的日期和时间是你的Web服务器的系统时钟的日期和时间。如果身处纽约的某个人在看你的网页，他看到的日期和时间与她当地的日期和时间也许是不一至的。

函数NOW同时返回日期和时间。如果你只想返回当前日期，你可以使用函数DATE。如果你只想返回当前时间，你可以使用函数TIME。例如：

The date is :<%=DATE%>

The time is :<%=TIME%>

操作日期

使用函数MONTH(),DAY(),WEEKDAY(),和YEAR(),你可以把一个日期分割成更小的部分。所有这些函数都以一个日期表达式作为参数，并返回一个数字。这里有一个如何使用这些函数的例子：

The Month is :<%=MONTH(DATE)%>

<BR>

The Day is : <%=DAY(DATE)%>

<BR>

The weekday is :<%=WEEKDAY(DATE)%>

<BR>

The year is :<%=YEAR(DATE)%>

假设当前日期是1997年8月9日，星期三。如果你把上面的例子包含在一个ASP网页中，在浏览器中将显示如下的文字：

The Month is : 7

The Day is : 9

The weekday is : 4

The year is : 1997

注意函数weekday()假定一个星期的第一天是星期日。如果你想把星期一作为一周的第一天，你可以使用如下的语句：

The weekday is :<%=weekday(DATE,vbWednesday)%>

你可以把任何一天作为一周的第一天。要指定一周的第一天是星期几，只要用vbSunday,vbMonday,vbTusday,vbWednesday,vbThurday,vbFriday或vbSaturday代替函数WEEKDAY（）的第二个参数即可。

你不单可以用函数DATE作为这些函数的参数。你也可以提供一个日期字符串或者一个日期常数作为参数，如下例所示：

The weekday is :<%=WEEKDAY(#12/25/2000#)%>

The weekday is :<%=WEEKDAY(

“12-25-2000”)%>

这两个函数都返回2000年圣诞节这一天是星期几。（这也许使你不习惯：返回值是2，代表星期一。）表达式#12/25/2000#是一个日期常数，日期常数总是括在字符

’＃’中。表达式”12-25-2000”是一个日期字符串。用这两种方法为函数提供一个日期都是可行的。

要以更加易读的形式返回月份和星期几，你可以使用函数WEEKDAYNAME（）或MONTHNAME（）。这两个函数返回的是字符串。这里有一个使用这两个函数的例子：

The month is :<%=MONTHNAME(MONTH(DATE))%>

The weekday is:<%=WEEKDAYNAME(WEEKDAY(DATE))%>

假设当前日期是八月，星期三。在这种情况下，第一个函数将返回字符串July，第二个函数返回字符串Wednesday。你可以把1到12之间的任何整数作为函数MONTHNAME（）的参数，你可以把1到7之间的任何整数作为函数WEEKDAYNAME（）的参数。

在缺省情况下，这两个函数不会缩写返回的字符串。函数MONTHNAME（）返回的是July而不是Jul，函数WEEKDAYNAME()返回的是Wednesday而不是Wed。然而，通过指定第二个参数为TRUE，你可以强制这两个函数返回缩写的字符串。（TRUE表示要缩写，FALSE表示不缩写。）如下例所示：

The month is: <%=MONTHNAME(MONTH(DATE),TRUE)%>

The weekday is: <%=WEEKDAYNAME(WEEKDAY(DATE),TRUE)%>

操作时间

你也可以把时间分割成更小的部分。通过函数HOUR(),MINUTE(),和SECOND()，你可以返回时间的不同部分。下面是使用这些函数的一些例子以及可能的返回值：

The hour is:<%=HOUR(TIME)%>

The hour is:21

The minute is:<%=MINUTE(TIME)%>

The minute is:39

The second is:<%=SECOND(TIME)%>

The second is:34

函数HOUR()返回一个0到23之间的整数（0点是午夜后的一个小时）。函数MINUTE()返回一个0到59之间的整数。函数SECOND()也返回一个0到59之间的整数。

你不单可以用函数TIME作为这些函数的参数，你还可以提供一个时间常数或时间字符串作为参数。下面的两个例子都从时间中抽取分钟数34：

The minute is:<%=MINUTE(#12:34:19#%>

The minute is:34

The minute is:<%=MINUTE(

“12:34:23”)%>

The minute is:34

比较日期和时间

VBScript有两个用于比较日期和时间的函数。你可以用函数DATEADD()对日期和时间作加法，用函数DATEDIFF()计算两个日期或时间的间隔。下面是使用函数DATEADD()的一些例子：

Your registration will exprie on <%=DATEADD(

“ww”,6,DATE)%>

Exactly fifteen seconds from now,at<%=DATEADD(

“s”,15,TIME)%>your computer

will melt.

第一个例子返回比当前日期晚六个星期的日期，第二个例子返回15秒钟后的时间中的秒数。

函数DATEADD（）有三个参数：

> > 第一个参数指定一个时间间隔。（见表8.2）

> > 第二个参数时间间隔的倍数因子。

> > 最后，第三个参数是一个日期或时间的变量或常量。

表8.2 日期和时间间隔

间隔 描述

yyyy 年

q 季度

m 月

y 天

d 天

w 天

ww 星期

h 小时

m 分钟

s 秒

你可以用函数DATEDIFF确定两个日期或时间之间的间隔。下面的例子演示了如何使用这个函数：

You have been a member for <%=DATEDIFF(

“d”,”1/1/1988”,DATE)%> days.

There are exactly <%=DATEDIFF(

“s”,DATE,”1/1/2000”)%> seconds remaining until

the year 2000.

第一个例子中的DATEDIFF()函数返回1/1/1988与当前日期之间的天数。第二个例子中的DATEDIFF()返回当前日期到2000年之间的秒数。

函数DATEDIFF()有三个参数：

> > 第一个参数是一个日期或时间间隔（参见表8.2）.

另两个参数是两个日期。为了避免出现负数，第一个日期参数应该比第二个早。（如果该函数返回一个负数，你应该知道第一个日期比第二个日期晚。）

格式化日期和时间

你可以规定一个日期或时间的显示格式。在缺省情况下，当你通过函数DATE显示一个日期时，它看起来是这样的：

7/9/97

但是，你可以用函数FORMATDATETIME()显示一个基于你计算机的区域设置的日期。你可以把一个日期显示为短日期格式或长日期格式。

注意

从控制面板中选择区域设置图标，可以为你的计算机进行区域设置。你可以通过区域设置来指定日期和时间的长格式或短格式。

下面的例子演示了如何控制长日期格式和短日期格式的显示：

Short Date:<%=FORMATDATETIME(DATE,vbShortDate)%>

Long Date:<%=FORMATDATETIME(DATE,vbLongDate)%>

当根据英国（美国）区域设置显示日期时，日期显示为如下的格式：

Short Date:7/9/97

Long Date:Wednesday,July 09,1997

注意短日期格式的显示与不做任何格式化时完全相同。在缺省情况下，日期以短日期格式显示。

你也可以用函数FORMATDATETIME()格式化一个时间。同样，你可以指定一个时间显示为长格式或短格式。当用短格式显示时间时，将使用24小时时钟（军事时间）。下面的例子演示了如何用FORMATDATETIME()函数操作时间：

Short Time:<%=FORMATDATETIME(TIME,vbShortTime)%>

Long Time:<%=FORMATDATETIME(TIME,vbLongTime)%>

当以英国（美国）区域设置显示时间时，时间的格式如下：

Short Time:03:20

Long Time:3:20:08 AM