一個轉化時間的函數。 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)
%>