详细解读ASP版本

网络整理 - 09-02

一个转化时间的函数。kingcms中的时间处理也是很强大的,有时间可以看看。

PHP中的date()函数功能实在是太强大了,忍不住用ASP模仿写了个.... 但只是写到日,还没写小时,分,秒的..
所以这个函数还没能格式化小时,分,秒的,有时间以后再加上。


<%
'******************************
'名称:时间处理函数
'函数:FormatDate(Str,DateTime)
'参数:Str 字符串,DateTime 时间
'作者:西楼冷月
'日期:2006/1/24
'网址: |
'描述:返回类型为字符串,不是时间类型,错误返回False
'******************************
Function FormatDate(Str,DateTime)
FormatDate=False
If IsDate(DateTime)=False Then
FormatDate=False
Exit Function
End If
'//年,月,周,日,小时,分钟,秒
Dim Y,M,W,D,H,Min,S
'//数字和中文的转换
Dim numTOcn,cnStr
cnStr="零|一|二|三|四|五|六|七|八|九|十|十一|十二|十三|十四|十五|十六|十七|十八|十九|二十|"
cnStr=cnStr&"二十一|二十二|二十三|二十四|二十五|二十六|二十七|二十八|二十九|三十|三十一|"
cnStr=cnStr&"三十二|三十三|三十四|三十五|三十六|三十七|三十八|三十九|四十|四十一|四十二|"
cnStr=cnStr&"四十三|四十四|四十五|四十六|四十七|四十八|四十九|五十|五十一|五十二|五十三|"
cnStr=cnStr&"五十四|五十五|五十六|五十七|五十八|五十九|六十"
numTOcn=Split(cnStr,"|")
'//数字和英文的转换
Dim numTOen,enStr
enStr="January|February|March|April|May|June|July|August|September|October|November|December|"
enStr=enStr&"Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday"
numTOen=Split(enStr,"|")

'-----------------------------
'年的处理,时间DateTime必须包含年份
'标签:3个 {Ya}:2006 {Yb}:06 {Yc}:二零零六
Y=Year(DateTime)'取得年份
If InStr(Str,"{Ya}")>0 Then Str=Replace(Str,"{Ya}",Y)'2006
If InStr(Str,"{Yb}")>0 Then Str=Replace(Str,"{Yb}",Right(Y,2))'06
If InStr(Str,"{Yc}")>0 Then
Dim YY'数字和中文的转换
YY=Y
For I=0 To 9
YY=Replace(YY,I,numTocn(I))
Next
Str=Replace(Str,"{Yc}",YY)'二零零六
End If
'-----------------------------
'月的处理,时间DateTime必须包含年份月份
'标签:5个 {Ma}:1 {Mb}:01 {Mc}:一 {Md}:January {Me}:Jan
M=Month(DateTime)'取得月份
Dim MM
If InStr(Str,"{Ma}")>0 Then Str=Replace(Str,"{Ma}",M)'1
If InStr(Str,"{Mb}")>0 Then
If M<10 Then MM=0&M
Str=Replace(Str,"{Mb}",MM)'01
End If
'//中文 一月
If InStr(Str,"{Mc}")>0 Then
MM=M
For I=1 To 12
If MM=I Then MM=numTocn(I):Exit For
Next
Str=Replace(Str,"{Mc}",MM)'一
End If
'//英文 January
If InStr(Str,"{Md}")>0 Then
MM=M
For I=1 To 12
If MM=I Then MM=numTOen(I-1):Exit For
Next
Str=Replace(Str,"{Md}",MM)
End If
'//英文缩写Jan
If InStr(Str,"{Me}")>0 Then Str=Replace(Str,"{Me}",Left(MM,3))
'-------------------------------
'日的处理,时间DateTime必须包含年份月份日
'标签:4个 {Da}:1 {Db}:01 {Dc}:一 {Dd}:1st
D=Day(DateTime)'取得日
Dim DD
'//数字 1
If InStr(Str,"{Da}")>0 Then Str=Replace(Str,"{Da}",D)
'//数字 01
If InStr(Str,"{Db}")>0 Then
DD=D
If DD<10 Then DD=0&DD
Str=Replace(Str,"{Db}",DD)
End If
'//中文 一
If InStr(Str,"{Dc}")>0 Then
DD=D
For I=1 To 31
If DD=I Then DD=numTOcn(I):Exit For
Next
Str=Replace(Str,"{Dc}",DD)
End If
'//英文 24th
If InStr(Str,"{Dd}")>0 Then
DD=D
Select Case DD
Case 1, 21, 31
DD = DD&"st"
Case 2, 22
DD = DD&"nd"
Case 3, 23
DD = DD&"rd"
Case Else
DD = DD&"th"
End Select
Str=Replace(Str,"{Dd}",DD)
End If
'-------------------------------
'星期的处理,时间DateTime必须包含年份月份日
'标签:4个 {Wa}:1 {Wb}:Friday {Wc}:一 {Wd}:Tue
W=WeekDay(DateTime)
Dim WW
'//数字 5
If InStr(Str,"{Wa}")>0 Then Str=Replace(Str,"{Wa}",W)
'//英文 Friday
If InStr(Str,"{Wb}")>0 Then
For I=1 To 7
If W=I Then Str=Replace(Str,"{Wb}",numTOen(I+11)):Exit For
Next
End If
'//中文 五
If InStr(Str,"{Wc}")>0 Then
WW=W
If WW=1 Then
Str=Replace(Str,"{Wc}","日")
Else
For I=2 To 7
If WW=I Then Str=Replace(Str,"{Wc}",numTOcn(I-1)):Exit For
Next
End If
End If
'//英文缩写 Tue
If InStr(Str,"{Wd}")>0 Then
For I=1 To 7
If W=I Then Str=Replace(Str,"{Wd}",Left(numTOen(I+11),3)):Exit For
Next
End If
'-------------------------------
'小时的处理,时间DateTime必须包含小时
'标签:
H=Hour(DateTime)
Dim HH

FormatDate=Str
End Function
%>
<%
'例子
'Sub Br()
'Response.Write "<br/>"&VBCrlf
'End Sub
'Sub Out(Str)
'Response.Write Str&VBCrlf
'Br
'End Sub
'----------Test
'Dim S,T
'S="今年是{Yc}年{Yb}年{Ya}年{Ma}月{Mb}月{Mc}月{Md} {Me} {Da}日{Db}日{Dc}日 The {Dd}周{Wb}|{Wd}星期{Wc}"
'T=Now()
'Out FormatDate(S,T)
%>