首页<<程序设计目录<<ASP实例之时间日期(date函数、time函数、now函数)/aspshili/riqi/shijian
(1)利用now函数
现在的时间是:2009-1-7 2:45:48
(2)利用Datediff函数
距2008年北京奥运会开幕式还有-152天
(3)利用DateAdd函数
再过一个月是:2009-2-7 2:45:48
(4)利用date函数
今天的日期是:2009-1-7
(5)利用WeekDay[name]函数
今天是:星期三
(6)利用time函数
当前的时间为:2:45:48

------------------------------------
(一)VBScript函数

函数是一种特定的运算,在程序中要使用一个函数时,只要给出函数名并给出一个或多个参数,就能得到它的函数值。
VBScript内部函数可分为:转换函数、字符串函数、日期和时间函数、数学函数和检验函数。
1.转换函数
VBScript对Variant变量一般会根据需要自动转换成合适的数据类型;但有时,自动转换有可能造成数据类型不匹配错误。此时,就应使用VBScript的转换函数来强制转换数据的子类型。

常用的转换函数见下表:
CStr(Variant)
将变量Variant转化为字符串类型
CDate(Variant)
将变量Variant转化为日期类型
CInt(Variant)
将变量Variant转化为整数类型
CLng(Variant)
将变量Variant转化为长整数类型
CSng(Variant)
将变量Variant转化为Single类型
CDbl(Variant)
将变量Variant转化为Double类型
CBool(Variant)
将变量Variant转化为布尔类型
2.字符串函数
常用字符串函数及功能如下表:

取字符串长度Len(string)
大、小写字母转换
Lcase(String), Ucase(String)
截取子字符串
Mid(string,start[,length])
Left(string,length)
Right(string,length)
删除空格
Trim(string), Ltrim(string), Rtrim(string)
重复String(num1,str1)
空格Space(num1)
取代字符串Replace(str1,str2,str3)
字符串拆分为1维数组
Split(str1,delimiter)
返回字符串位置InStr(str1,str2)

3.时间和日期函数
Now()
取得系统当前日期和时间
Date()
取得系统当前日期
Time()
取得系统当前时间
Month(Date)
取得给定日期的月份
Day(Date)
取得给定日期是几号
WeekDay(Date)
取得给定日期是星期几

(星期天,1到6分别为1~7)
Year(Date)
取得给定日期的年份
DateDiff(“Var”,Var1,Var2)
计算日期或时间Var1与Var2的间隔

“Var”:为时间间隔因子
DateAdd(“Var”,num,date)

num:间隔倍数;date:原始日期或时间
对时间/日期num作加法
FormatDateTime(Date,2)
显示短日期格式
FormatDateTime(Date,1)
显示长日期格式
FormatDateTime(Date,4)
显示短时间格式
FormatDateTime(Date,3)
显示长时间格式

4.数学函数
Abs(number)
返回一个数的绝对值
Sqr(number)
返回一个数的平方根
Int(number)
取number的最大整数部分
FormatNumber(num1,num2)
将num1转化为指定小数位num2的数
Rnd()
返回0到1的随机数
Ubound(数组名,维数)
返回最大下标数
Lbound(数组名,维数)
返回最小下标数

5.检验函数
VarType(Variant)
返回变量Variant的数据子类型
IsEmpty(Variant)
检查变量Variant是否为Empty
IsNull(Variant)
检查变量Variant是否为Null
IsObject(Variant)
检查变量Variant是否为对象类型
IsNumeric(Variant)
检查变量Variant是否为数值类型
IsArray(Variant)
检查变量Variant是否为数组类型
IsDate(Variant)
检查变量Variant是否为日期类型

(二)VBScript脚本语言语句
1.条件语句
⑴ If Then End If
If 条件语句 Then

执行语句
End If
⑵ If Then Else End If(单条件)
If 条件语句 Then

执行语句1
Else
执行语句2
End If
⑶ If Then Else End If(多条件)
If 条件语句1 Then

执行语句1
ElseIf 条件语句2 Then
执行语句2
Else
执行语句n+1
End If
⑷ Select Case 语句
Select Case 变量或表达式

Case 结果1
执行语句1
Case 结果2
执行语句2
Case 结果 n
执行语句n
Case Else
执行语句n+1
End Select
2.循环语句
⑴ For …… Next循环
For counter=start To end [Step number]

执行语句
Next
⑵ Do …… Loop循环
Do While 条件1

执行语句
Loop Do
执行语句
Loop While 条件1
⑶ For Each…In循环
For Each <元素> In <集合>

<语句>
Next
说明:对<集合>中的每一个<元素> 依次执行<语句>一次。其集合元素为离散型的。
(三)VBScript过程
在VBScript中,过程有两种:Sub子程序和Function函数。
(1) Sub子程序
Sub子程序的语法:

Sub 子程序名(参数1,参数2,…)
End Sub
调用子程序
1) Call 子程序名(参数1,参数2,…)
2) 子程序名 参数1,参数2,…
(2) Function函数
Function函数的语法:

Function 函数名(参数1,参数2,…)
End Function
调用函数
变量= Function 函数名(参数1,参数2,…)
函数可以向变量一样引用和参与运算
(四)“显示当月日历”实例分析
该程序的运行结果为显示当月的日历,其输出形式为
3.要解决的主要问题
⑴ 首先要计算当月有多少天?
⑵ 其次要计算1号是星期几?
⑶ 依次计算每一天到底位于第几行第几列?(不算标题行)?
⑷ 计算该表格总共有多少行?
⑸ 画一个若干行7列的表格,将每一天输出到相应的单元格。
8. 计算当月有多少天?
每个月的天数在28~31的范围。

利用Isdate()函数判断29、30、31是否是该月的合法日期。
使用自定义函数numday()来完成该功能。
9. 计算1号是星期几?
利用Weekday()函数来判断,它返回值1到7,分别对应星期日、星期一、….、星期六,因此1号是星期几正好对应第几列。

使用自定义函数firstday()来完成。
10. 计算每一天位于第几行第几列?
一个月前面空出来的天数为:firstday()-1

如果(当天日+ firstday()-1)能被7整除,则行数为: ( 当天日+ firstday()-1 ) \ 7 ;否则行数为: ( 当天日+ firstday()-1 ) \ 7 +1 。两个合为一个式子:行= ( 当天日+ firstday()-2 ) \ 7 +1
列=(当天日+ firstday()-1) \ 7 Mod 7 但余数为0,应该在第7列。
使用2维数组来保存行、列信息。利用自定义函数arraydate()来完成。
11. 计算日历总共有多少行?
根据月份不同,日历的行数可能是4、5和6行。

该月最后一天的行数,即为日历的总行数。
总行数= ( numDay()+ firstday()-2 ) \ 7 +1
使用自定义函数numRow()来完成。
4.绘制表格,将每一天输出到该表格中
利用嵌套循环输出数组中的每个值。

如果数组值为0,就输出一个空格;如果不为0,可分为3种情况:当天,蓝色加粗显示;周末,红色显示;其他则黑色。
5.程序代码
<%Option Explicit %>

<html>
<head>
<title>简单的日历</title>
</head>
<body>
<h3 align="center"><%=Year(Date())%>年<%=Month(Date())%>月</h3>
<table border="1" align=center>
<tr align=right>
<td>日</td><td >一</td><td>二</td><td>三</td><td >四</td><td >五</td><td >六</td>
</tr>
<%
首先调用函数arrarDate,返回6*7的二维数组,该数组和单元格一一对应
Dim theDate '定义一个变量,用以接受返回的数组
theDate=arrayDate()调用函数,返回数组,执行后,theDate自动变成数组
下面正式输出日历
Dim I,J
For I=1 To numrow()'从第1行到最后1行循环
Response.Write "<tr>" '开始一个新行
For J=1 To 7
If theDate(I,J)<>0 Then
If theDate(I,J)=Day(Date()) Then
Response.Write "<td><font color=blue><b>" & theDate(I,J) & "</b></font></td>" '将当天标为蓝色加粗
ElseIf J=1 OR J=7 Then
Response.Write "<td><font color=red>" & theDate(I,J) & " </font></td>" '将周六和周日标为红色
Else
Response.Write "<td>" & theDate(I,J) & "</td>" '其它日期普通显示即可
End If
Else
Response.Write "<td>&nbsp;</td>"'该单元格为空
End if
Next
Response.Write "</tr>" '结束这一行
Next%>
</table>
<%
'该函数返回当月共有多少天
Function numday()
Dim IntDay,I
intDay=28 '用intDay来统计,首先赋值28
For I=29 to 31
If IsDate(Year(date()) & "-" & Month(date()) & "-" & I) Then
intDay=I '如果当天有效,返回True,则更新天数
End if
Next
numday=intDay '返回函数值
End Function
'该函数返回当月1号是星期几

Function firstDay()
firstDay=WeekDay(Year(date()) & "-" & Month(date()) & "-1") '计算1号是周几
End Function
'该函数将每一天保存到6*7的数组中,将日期填入对应的数组中

Function arrayDate()
Dim I,J,K,arrayTemp(6,7)
For I=1 To 6 '这个嵌套循环用以给数组赋初值0
For J=1 To 7
arrayTemp(I,J)=0
Next
Next
For K=1 to numday() '从1号到最后一天循环
I=(k+firstDay()-2)\7+1 '计算该天所在的行数
J=(k+firstDay()-1) Mod 7 '计算该天是所在的列数
If J=0 Then J=7 '如果余数为0,表示是第7列
arrayTemp(I,J)=K '最后将当天保存到对应行列中
Next
arrayDate=arrayTemp '返回函数值
End Function
'该函数返回当月共应该显示多少行
Function numRow()
numRow=(numDay()+firstDay()-2)\7+1 '计算表格的行数,调用了前面的函数
End Function%>
</body>
</html>
-----------------------------------
(1)ASP
-Time::now
display server now time clock显示伺服主机的现在时间Description:
display server clock time

read time
shows
month/daye/year hour:minute:second AM or PM
读取主机的时间 月/日/年 时:分:秒 上午或下午

(2)ASP-Time::datediff
time different between 2 timeDescription:
Datediff("how_to_count",oldTime,newTime)
how to count :h,m,n,q,ww,w,yyyy,y,s,d
h=hour
m=month
q=quarter
y=which date of a year
yyyy=which year
d=which date of a month
n=minute
s=second
ww=which week of a yeay
w=which day of a week
(3)ASP-Time::DateAdd
add time , Search by Date, Search by Time, MonthDescription:
DateAdd("m",1,now)
month plus +1 from now

yyyy - Year
q - Quarter
m - Month
y - Day of year
d - Day
w - Weekday
ww - Week of year
h - Hour
n - Minute
s - Second

(4)ASP-Time::date
read the server clock: month/date/year读取计算机服务器的[ 月/日/年 ]资料Description:
server time : display month/date/year印出计算机服务器的[ 月/日/年 ]资料

(5)ASP-Time::WeekDay
WeekDayName(WeekDay(DATE))=“Wednesday”检查今天是不是星期三 (一星期的第四日)Description:
weekday()
Sunday as the first day of a week
WeekDayName(WeekDay(date))

Monday as the first dat of a week
ex: WeekDayName(WeekDay(date,vbWednesday))
注意函数weekday()为设定一个星期的第一天是星期日
WeekDayName(WeekDay(date))
为设定一个星期的第一天是星期一
例: WeekDayName(WeekDay(date,vbWednesday))
(6)ASP-Time::time
显示当前的时间

(7)ASP-Time::FormatDateTime
<%= FormatDateTime(Now(), 0) %>时间日期常数Description:
FormatDateTime(Now(), n)

(8)ASP-Time::Order-by-Time
Order by timeDescription:
Order by time DESC
Order by time ASC
Order by cast(___ as datetime)
 
阿里妈妈广告支持[alimama.com]
关键词:data/time/now/asp