标题标题  显示论坛会员列表名单  搜索论坛搜索  HelpHelp
  注册注册  登入登入
ASP教学区
 DoReMe : ASP教学区
主题 话题: 第八章 VBScript 回复发表新主题
作者
贴子内容 << Prev Topic下一个主题 >>
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:42上午 | IP记录 引用 oneni

这一章介绍如何使用Visual Basic的Scripting版本(VBScript),Active Sever Pages的缺省脚本语言。VBScript通过变量,操作符,循环,分支,函数和子例程,扩展了HTML。通过在HTML网页 中加人VBScript脚本,你可以使静态的HTML网页成为动态网页。学习完这一章之后,你将理解如何创建驱动ASP网页的V BScript脚本。

VBScript介绍

VBScript与Basic语言有密切关系。如果你熟悉BASIC,你将会发现VBScript很容易学习和使用。VBScr ipt是Microsoft Visual Basic的简化版本。

VBScript是一种脚本语言。这意味著这种语言比BASIC语言的成熟版本容易使用又难于使用。编制简单的程序时,脚本语言 是容易使用的。脚本语言的句法比较简单。但是,简单的句法也使开发大的应用程序变得很困难。

你可以在HTML文件中直接嵌入VBScript脚本。这使你能够扩展HTML,使它不仅仅是一种页面格式语言。带有VBScr ipt脚本的网页在每次下载到浏览器时都可以是不同的,而且可以对用户的操作作出反应。

VBScript是Active Sever Pages的缺省语言。你也可以在ASP网页中使用其它脚本语言,如Jscript(将在第九章中讨论),Perl,或者REX X(由IBM UK实验室的Michael Cowlishaw所创的一种语言)。但是,本书中所有的ASP例子程序都使用VBScript。

客户端和服务器端编程语言

VBScript既可以作为客户端编程语言,也可以作为服务器端编程语言。客户端编程语言是可以由浏览器解释执行的语言。Jav a和Jscript/JavaScript也可以作为客户端编程语言。当一个以这些语言中的任意一种编制的程序被下载到一个兼容 的浏览器中时,浏览器将自动执行该程序。

客户端编程语言的优点是浏览器完成了所有的工作,这可以减轻服务器的负担。而且客户端程序运行起来比服务器端程序快得多。当一个 浏览器的用户执行了一个操作时,不必通过网络对其作出响应,客户端程序就可以作出响应。

但是,一般来说,可以解释VBScript脚本的浏览器只有Microsoft Internet Explorer。例如Netscape Navigater将忽略VBScript脚本。这意味著目前没有充分的理由把VBScript作为客户端编程语言。你不应该花 费时间来编写只有少数浏览器可以解释的程序。

注意

Internet Explorer和Netscape Navigater都可以解释JavaScript程序。要了解JavaScript的更多信息,请参见下一章。

注意

如果你在开发Internet应用程序,你也许想用VBScript作为客户端语言。而对于Intranet,你也许要对你所使 用的浏览器进行一定的控制。

VBScript也可以作为服务器端编程语言。服务器端编程语言是在服务器上执行的语言。服务器为一个站点提供文件,而浏览器接 收这些文件。服务器端编程语言执行站点主机上的所有操作,所有的功能要你自己来实现。

用VBScript作为服务器端编程语言的好处是VBScript不受浏览器的限制。VBScript脚本在网页通过网络传送给 浏览器之前被执行。Web浏览器收到的只是标准的HTML文件。

当你创建ASP网页时,你将用VBScript作为服务器端编程语言。因此,本书只讲述这方面的内容。但是,你应该知道,你在本 章中所学的大部分内容在用VBScript作为客户端编程语言时也是使用的。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:42上午 | IP记录 引用 oneni

在Active Sever Pages中使用VBScript

在这一节中,你将学习如何创建可以执行Visual Basic脚本的ASP网页。在本书的第四部分,「用对像和组件创建ASP网页」中,你将学习到关于Active Sever Pages的大部分内容。目前,你可以把ASP网页当作HTML网页看待,不过是把文件名后缀改为.asp。

为了能使用本章中的例子,你需要把所有的文件以后缀名.asp保存,而不是.cfm。如果你不这样做,则脚本不会被解释。当包含 脚本的ASP网页被下载时,脚本的实际文本将会出现在浏览器窗口中。这当然是你所不希望见到的。

要使用本章中的例子,你还必须把文件保存在Web服务器的目录下。例如,你可以把文件保存在wwwroot目录下。对要执行的脚 本来说,网页必须保存在一个Web服务器可以访问的目录下。

当你下载一个ASP网页时,你不要直接从磁盘上下载。例如,如果你把一个ASP网页保存为C:\Inetpub\wwwroot \mypage.asp,你不要通过在浏览器的地址条中键入这个文件路径来下载该文件。你应该通过Web服务器申请这个文件。例 如,如果你的服务器名为mysever,文件保存在Web服务器的根目录下,在浏览器的地址条中键入地址 http://mysever/mypage.asp即可。同样,如果你不这样做,该ASP网页中的脚本不会被解释。

你还必须把保存ASP网页的目录设置为允许执行脚本或允许执行程序。如果没有得到许可,Web服务器不会执行一个脚本。要了解这 方面的更多信息,请参见第2章,「安装和使用Internet Information Sever」。

注意

当你修改一个ASP网页时,你会发现修改后的内容没有反映到已下载到浏览器中的网页中。这是web服务器使用了内存缓冲区的结果 。使用内存缓冲区是为了提高性能。当你开发一个站点时,你也许要取消这个特性。(参见第二章。)

把Visual Basic脚本集成到Active Sever Pages中

把VBScript的脚本集成到Active Sever Pages中的方法不止一种。(要了解详细信息,请参见第13章,「建立Active Sever Pages」。)最容易的方法是使用两个特殊字符<%和%>。例如,下面的Visua Basic脚本在一个ASP网页中自动执行:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<% FOR myvar=1 TO 500%>

<B> Hello Magic!</B>

<% NEXT %>

</BODY>

</HTML>

这个脚本把句子「Hello Magec!」在一行中显示500次(见图8.1)。注意此例中字符对<%和%>的使用。它们指明Visual Basic脚本的开始和结束。

图8.1 用VBScript来创建ASP页

 

 

 

 

 

 

 

 

 

 

 

 

 

字符对<%和%>的作用与HTML中的字符对<和>的作用非常相似。不过是<和>用来指明 HTML标识,<%和%>用来指明脚本。当Web服务器看到这个特殊字符对时,就试图把它们之间的内容解释为一个脚 本。

例如,文本<% FOR myvar=1 TO 500 %>和文本<% NEXT %>都是Visual Basic脚本的例子。这两个脚本结合起来构成了一个迭代500次的循环。

还应注意此例中Visual Basic脚本如何与HTML标识相集成。在ASP网页中,脚本与HTML可以自由混合。文本<B> Hello Magic! </B>不是Visual Basic脚本的一部分,<B>标识是HTML的成分而不是VBScript的。但是,文本<B> Hello Magic! </B>会被解释和显示500次,因为它被括在Visual Basic脚本中。

当把Visual Basic脚本集成到ASP网页中时,你要注意另外一个表达式。你可以用符号对<%=和%>来打印变量或函数的值。 考虑下面这个简单的ASP网页:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<%FOR myvar=1 TO 500%>

<%=myvar%><B>: Hello Magic!</B>

<% NEXT %>

</BODY>

</HTML>

这个例子也把「Hello Magic!」显示500次。但是,在每个「Hello Magic!」前面有一个数字,该数字代表变量myvar的值。

表达式<%=myvar%>打印变量myvar的值。符号对<%和%>用来指明一个脚本,而符号对&l t;%=和%>用来指明变量或函数的值。跟在表达式<%=后面的任何内容都将被打印在浏览器窗口中。

这里有一个用符号对<%=和%>打印函数值的例子。下面的ASP网页在网页顶部打印当前的日期和时间:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

This page was created on :<%=NOW%>

<BR>Have a nice day!

</BODY>

</HTML>

VBScript函数NOW返回当前的系统日期和时间。当这个文件被下载到浏览器中时,当前的日期和时间出现在网页的顶部(见图 8.2)。

图8.2 用ASP页显示时间和日期

 

 

 

 

 

 

 

 

 

 

 

 

 

你不要把没有返回值的VBScript命令放在符号对<%=和%>之间。这会导致错误。例如,不要这样做:

<%=FOR I=1 TO 100%>

不要混淆了符号对<%和%>与符号对<%=和%>的作用。一个是用来指明脚本的开始和结束;另一个用来 显示变量和函数的值。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:43上午 | IP记录 引用 oneni

声明变量

在Visual Basic脚本中,使用一个变量之前不需要专门声明它。例如,下面的ASP网页可以工作得很好:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<% myvar=」Hello Magic!」%>

<%=myvar%>

</BODY>

</HTML>

在这个例子中,变量myvar没有经过声明。但是,它被分配了一个值「Hello Magic!」,并且这个值被输出到浏览器。这不会导致错误。

然而,如果你在编写长而复杂的程序,你也许希望变量应该先声明再使用。这样做的好处是使你的脚本易于调试。如果你敲错了应该变量 的名字,将会产生错误。下面的例子演示了如何强制变量必须先声明后使用:

<% OPTION EXPLICI %>T

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<%

DIM myvar

myvar=」Hello Magic!」

%>

<%=myvar%>

</BODY>

</HTML>

在这个例子中,OPTION EXPLICIT语句强制所有的变量必须专门声明。DIM语句声明了变量myvar。如果你不声明这个变量,你将会收到错误信息 :Variable is undefined:』myvar』.

你可以用DIM语句同时声明多个变量,只要把变量名用逗号隔开即可。在下面的例子中,用一个DIM语句声明了四个变量:

DIM myvar1,myvar2,myvar3,myvar4

注意

OPTION EXPLICIT语句的位置很特殊。你必须把OPTION EXPLICIT语句作为一个ASP网页的起始语句之一。它必须出现在任何HTML标识或其它VBScript命令之前。如果你 不这样做,该语句将被视为非法语句。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:43上午 | IP记录 引用 oneni

变量子类型

当你用DIM语句声明一个变量时,你没有为变量定义数据类型。这是因为VBScript中所有变量都是相同的数据类型。所有变量 都是variant型变量。variant是一种特殊的变量类型,它可以代表许多其它类型的变量。

当你需要用一个变量代表一个数字时,你只要把一个数字分配给该变量,不用引号标记。当你需要用一个变量代表一个字符串时,你只要 把字符串分配给该变量,用引号标记。(数字不用引号,字符串要用引号。)一个variant型变量可以自动与赋给它的值的类型保 持一致。

通常,你没有理由为一个变量如何代表你分配给它的数据而操心。但是,有一个函数可以揭示一个variant型变量的子类型。考虑 如下的例子:

<%myvar=」Hello Magic!」%><%=TYPENAME(myvar)%>

<%myvar=3%><%=TYPENAME(myvar)%>

在这个例子中,变量myvar被分配了两个不同数据类型的值。对每种类型的值,VBScript函数TYPENAME()可以显 示该变量所代表的实际数据的子类型。例如,当给变量myvar分配字符串数据「Hello Magic!」时,variant型变量的子类型是string。当给变量myvar分配整数3时,myvar的子类型是int eger。

举这个例子的目的是说明variant型变量实际代表的数据是有子类型的。函数TYPENAME()可以揭示一个变量的子类型。 但是,在多数情况下,你不需要关心一个变量是如何代表数据的(参见下一节)。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:43上午 | IP记录 引用 oneni

变量数据范围

不同的变量子类型可以代表的数据有不同的范围。表8.1列出了变量子类型和它们的数据范围的完整信息:

表8.1 变量子类型及其数据范围

子类型 范围

Byte 0到255

Boolean TRUE或FALSE

Integer -32,768到32,767

Long -2,147,483,648 到2,147,483,647

Single 负数:-3.402823E38到-1.401298E-45

正数:1.401298E-45到3.402823E38

Double 负数:-1.79769313486232E308到-4.94065645841247E-324

正数:4.94065645841247E-324到1.7976931348623eE308

Currency -922,337,203,685,477.5808到922,337,203,685,477.5807

Date 100年1月1日到9999年12月31日

object 任何对像

string 变长字符串,长度从0个字符到大约20亿个字符

注意string子类型的数据范围非常之大。你可以把整个网页,或者甚至整部小说保存在一个字符串变量中。我发现把网页保存在字 符串中是很有用处的。

空变量和空值变量

在给一个变量分配一个值之前,该变量是空的。用函数ISEMPTY()可以检测一个变量是否为空。如下例所示:

<%

myvar=」Hello Magic!」

%>

myvar:<%=ISEMPTY(myvar)%>

myvar2:<%=ISEMPTY(myvar2)%>

在这个例子中,检测了两个变量myvar和myvar2,看它们是否为空。因为myvar已经被分配了一个值,当把变量myva r作为函数ISEMPTY()的参数时,该函数返回FALSE。而myvar2没有分配数据,因此以myvar2为参数时,函数 ISEMPTY()返回TRUE。

空变量与被分配了长度为0的字符串或数字0的变量是不同的。例如,语句myvar=」」和myvar=0都该变量myvar分配 了一个值。在这两种情况下,该变量都不是空的。只有一个从未被赋过值的变量才是空变量。

空变量与包含空值的变量也是不同的。这也许有些奇怪。一个被分配了空值NULL的变量不是空变量。而是有值NULL。如果你想使 一个已经分配了值的变量成为空变量,你必须使用关键字EMPTY.像这样:

myvar=EMPTY

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:46上午 | IP记录 引用 oneni

声明常量

VBScript可以声明常量。常量与变量有相似之处;但是,一旦你声明了一个常量,该常量的值将不能被改变。这里有一个例子:

<%

CONST REG_FEE=10.00

%>

You will be charged $<%=REG_FEE%> to register at this web site.

在这个例子中,常量REG_FEE被分配了值10.00。因为REG_FEE是一个常量,在脚本中将不能给REG_FEE分配新 值。如果你试图改变一个常量的值,你将收到错误信息:Illegal Assignment error.。

当有些数值你不希望在脚本中被改变,而是希望将来进行手工修改时,使用常量是有用的。例如,你希望你的站点的注册费用是一个固定 价格。但是,在将来的某一天,你也许要提高这个价格。通过改变一个常量的值,你可以很容易地完成这个工作。

你可以一次定义多个常量,只要把每个常量定义用逗号隔开即可。像这样:

<%

CONST REG_FEE=10.00,REG_TERM=20,SITE_NAME=」 Web Site of Magic」

%>

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:46上午 | IP记录 引用 oneni

创建和修改数组

当你需要存储一组相关的值时,你应该使用数组。数组是一个可以存储一组值的变量。例如,你可以创建一个数组,用来存储你的站点上 出售的一系列商品:

<%

DIM Product(10)

Product(0)=」Trading Card」

Product(1)=」Book on Active Sever Pages」

Producr(2)=」Computer Monitor」

%>


在这个例子中,DIM语句用来声明一个数组。与前面讨论的变量不同,数组在使用之前必须声明。这个DIM语句声明了一个可以存储 11个值的数组。

注意

VBScript中数组的下标从0开始,因此每个数组的元素个数都比声明语句中的数字多1。(用刚才讨论的数组Product, 你可以存储11个值。)如果你试图存储更多的 数据,则将发生错误。

声明了一个数组之后,你可以用一个索引为它的元素分配数值。在上面的例子中,索引值为1的数组元素被分配了值「Book on Active Sever Pages」。如果你想输出这个元素的值,你可以用这样的语句:

<%=Product(1) %>

上例中数组的作用与一个列表相似。它有一个索引,可以用来引用所有的元素。你也可以创建有多个索引的数组。考虑如下的例子:

<%

DIM Product(10,1)

Product(0,0)=」Trading Card」

Product(0,1)=」A very valuable trading card.」

Product(1,0)=」Book on Active Sever Pages」

Product(1,1)=」A comprehensive book on Active Sever Pages」

Product(2,0)=」computer Monitor」

Product(2,1)=」This monitor is in excellent shape.」

%>

这个脚本中DIM语句创建了一个多维数组。这个数组的作用与一个表相似;第一个索引指定行,第二个索引指定列。

这个数组保存了产品名字和产品描述。要指向一个特定的产品,你应使用第一个索引,要指定产品名字或产品描述,应使用第二个索引。

使用数组时,并不只限于使用二维数组。你可以声明直到60维的数组。要创建一个多维数组,只要简单地在数组声明语句中增加一个维 数即可。像这样:

DIM Product(10,10,10,10)

这个声明创建了一个四维数组,每一维可以存储11个元素。这意味著这个数组共可以保存14,641个数值(11*11*11*1 1=14.641)。可以看到,随著维数的增加,数组的大小增加得很快。

目前讨论过的只限于固定大小的数组。一旦你声明了一个固定大小的数组,你将不能改变量组中的元素个数。要改变一个固定数组的大小 ,你必须删除它再重新创建。然而,VBScript另外有一种动态数组。这里有一个例子:

<%

DIM Product()

REDIM Product(2)

Product(0)=」Trading Card」

Product(1)=」Book on Active Sever Pages」

Product(2)=」Computer Monitor」

REDIM PRESERVE Product(3)

Product(3)=」Coffee Cup」

%>

在这个例子中,DIM语句把数组Product声明为动态数组。当你声明一个动态数组时,你不需要指定数组的维数。在你第一次给 一个动态数组分配数值之前,你必须用REDIM语句指定它的维数。

这个例子中,数组Product首先被创建为只能有三个元素。接下来,再次使用REDIM语句,增大了这个数组的大小。该数组被 重定义维数以包含四个元素。这使你可以把值「Coffee Cup」保存在重定义的数组中。

注意第二个REDIM语句中关键字PRESERVE的使用。当一个数组被重设维数时,这个关键字保存该数组中的内容。如果你不使 用这个关键字,数组中的所有数据都会丢失。

你可以用REDIM语句增加维数,也可以减少维数。你还可以用REDIM语句增大或减小一个特定维的大小。但是,当你删除某一维 或减小某一维的大小时,你将会丢失数据。

例如,假设你在上一个例子中把REDIM PRESERVE Product(2)作为最后一个语句,在这种情况下,你将不能再使用Product(3)。数据「Coffe Cup」将会从数组Product中丢失。

用关键字PRESERVE,你只能修改一个多维数组的最后一维。你可以增大最后一维,不丢失数据,或减小最后一维,丢失一部分数 据。但是,当你增加或减少维数时,你无法保存数组中的数据。

用REDIM语句,你可以扩展或减缩一个数组任意多次。当你从数据库中取出数据时,你将会发现这个特性是很有用的。在本书的第五 部分,「数据组件」中,你将学习这方面的内容。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:46上午 | IP记录 引用 oneni

数组函数

使用数组时,有三个函数是你必须掌握的。函数UBOUND()返回一个数组的大小。确切地说,它可以返回数组的某一维的大小。这 里有这个函数的一些例子:

<%

DIM Product(10,33)

%>

<%=UBOUND(Product)%>

<%=UBOUND(Product,1)%>

<%=UBOUND(Product,2)%>

在这个例子中,第一个UBOUND()函数返回值是10。在缺省情况下,这个函数返回的是一个函数的第一维的上界。

第二个UBOUND()函数的返回值与第一个相同。它返回的是数组Product的第一维的上界。

警告

虽然数组的某一维的第一个索引值总是0,但其第一维总是用1表示,不要混淆了维数与索引。

最后,第三个UBOUND()函数的返回值是33。这是数组Product的第二维的维数。

当一个数组不是你声明的,但你需要确定这个数组的大小时,函数UBOUND()是有用的。例如,在第23章「使用记录集中」,你 将学习如何从一个数据库表中把记录取到数组中。如果你需要知道这项操作所产生的数组的大小,你可以使用函数UBOUND()。( 知道一个数组的大小使你能够遍历和显示它的所有元素。)

VBScript有一个ERASE语句,可以用来操作固定大小的数组和动态数组。通过对一个静态数组使用ERASE语句,你可以 清除这个数组。如果该数组是一个字符串数组,ERASE语句把该数组的所有元素重新 初始化为空字符串」」。如果该数组是一个数值数组,ERASE语句可以把该数组的所有元素重新初始化为0。这里有一些例子:

<%

DIM Product(2)

Product(1)=」Running shoes」

ERASE Product

%>

<%=Product(1)%>

当这个脚本执行时,不会输出任何信息。ERASE语句清除了数组Product的所有数据,不论有多少元素被分配了值。

当对动态数组使用ERASE语句时,它的作用与上述的不同。当你对动态数组使用ERASE语句时,该数组本身会被删除。在你能重 新使用这个数组之前,你必须对它重新初始化。如下例所示:

<%

DIM Product()

REDIM Product(100)

Product(1)=」Running Shoes」

ERASE Product

%>

这个脚本创建了一个名为Product的动态数组。该数组的索引值为1的元素被赋了一个值。然后,用ERASE语句删除了这个数 组。如果你在它被删除之后试图访问这个数组的任何一个元素,则将会发生错误。

当你删除了一个数组后,内存就被释放。对一个访问率很高的站点来说,每一字节的内存都很珍贵。因此当你不再需要一个动态数组时, 用ERASE语句删除它是个不错的主意。

操作数组的最后一个有用的函数是ISARRAY()。函数ISARRAY()可以用来测试一个变量表达式是否是一个数组。这里有 一个例子:

<%

DIM Product(10)

DIM somevar

%>

<%=ISARRAY(Product)%>

<%=ISARRAY(somevar)%>

在这个例子中,第一个ISARRAY()函数返回TRUE,因为Product实际上是一个数组。第二个ISARRAY()函数 返回FALSE,因为变量somevar没有被声明为一个数组。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:46上午 | IP记录 引用 oneni

注释Visual Basic脚本

你可以在ASP网页中使用HTML风格的注释。但是,在Visual Basic脚本中你不能用这种注释。要在一个脚本中加人注释,你必须用下面的方法:

<!--I am an HTML comment.-->

<%

REM I am a VBScript comment.

『I am also a VBScript comment.

%>

在这个例子中,REM语句用来建立一条注释。注意一个撇号可以用于同样的目的。REM语句与撇号执行同样的功能。

这两种注释只能用来注释一行。用REM语句或撇号建立的注释在一行的末尾结束。但是,你可以把注释与其它Visual Basic语句写在同一行中:

<%

FOR i=1 TO 100 『The start of a loop

myvar=myvar+1 『Increments myvar

NEXT 『The end of a loop

%>

HTML风格的注释与VBScript注释的一个重要区别是VBScript注释不发送给浏览器,你不能用web浏览器中的Vi ew Source命令来察看VBScript注释。

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回复: 26
Posted: 2004/11月/24 9:47上午 | IP记录 引用 oneni

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

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

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

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

函数NOW同时返回日期和时间。如果你只想返回当前日期,你可以使用函数DATE。如果你只想返回当前时间,你可以使用函数TI ME。例如:

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/200 0#是一个日期常数,日期常数总是括在字符』#』中。表达式」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,函数WEEKDAY NAME()返回的是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

Back to Top 查看 oneni's 资料 搜索其它贴子 oneni 访问 oneni's
 

of 3 下一页 >>
  回复发表新主题
显示可打印的页面 显示可打印的页面

论坛跳转
不能 张贴新论题在这个讨论版
不能 回应论题在这个讨论版
不能 删除你的发言在这个讨论版
不能 编辑你的发言在这个讨论版
不能 新增投票标题在这个讨论版
不能 在这个讨论版投票

Edit by doreme Forums version 2004
Welcome ©2001-2004 doreme Guide

This page was generated in 0.1870 seconds.

 
保养品
保养品, Skin Care
www.elady.tw
美材批发
美材, Cosmetic
www.elady.tw/beauty_org
保养品批发
名牌保养品、保养品批发
gb.perfume.com.tw/skincare
饰品批发
饰品、饰品批发
gb.perfume.com.tw/ornament