一個轉化時間的函數。kingcms中的時間處理也是很強大的,有時間可以看看。
PHP中的date()函數功能實在是太強大了,忍不住用ASP模仿寫了個.... 但只是寫到日,還沒寫小時,分,秒的..
所以這個函數還沒能格式化小時,分,秒的,有時間以後再加上。
<%
'******************************
'名稱:時間處理函數
'函數:FormatDate(Str,DateTime)
'參數:Str 字符串,DateTime 時間
'作者:西樓冷月
'日期:2006/1/24
'網址:www.xilou.Net | www.chinaCMS.org
'描述:返回類型為字符串,不是時間類型,錯誤返回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)
%>