一个转化时间的函数。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)
%>