很久很久前写的: http://blog.csdn.net/northwolves/archive/2004/07/21/47369.aspx 完整的将日期时间转换为汉字的代码 下面的代码可以将任意日期(1000-01-01 0:0:0------>9999-12-31 23:59:59)转换为汉字显示Function datename(ByVal mydate As String) As StringDim i As Long, mystr(6) As String, temp As String Const all As String = "○一二三四五六七八九十"If Not IsDate(mydate) Then '错误处理 MsgBox "非正确日期格式!", vbInformation, "警告" Exit Function End If mydate = CDate(mydate) '日期格式转换 For i = 0 To 6 mystr(i) = Choose(i + 1, Year(mydate), MonthName(Month(mydate)), Day(mydate), Hour(mydate), Minute(mydate), Second(mydate), WeekdayName(Weekday(mydate, vbSunday))) Next For i = 1 To 4 '生成年 temp = temp & Mid(all, CInt(Mid(mystr(0), i, 1)) + 1, 1) ' trans year to chinese character Next mystr(0) = temp & "年" temp = Choose(Val(mystr(2)) \ 10 + 1, "", "十", "二十", "三十") & Trim(Mid(all, Val(mystr(2)) Mod 10 + 1, 1)) & "日" '生成日 mystr(2) = Replace(temp, "十○日", "十日") '避免出现 “三十○日” temp = Choose(Val(mystr(3)) \ 10 + 1, "", "十", "二十") & Trim(Mid(all, Val(mystr(3)) Mod 10 + 1, 1)) & "时" '生成时 mystr(3) = Replace(temp, "十○时", "十时") temp = Choose(Val(mystr(4)) \ 10 + 1, "", "十", "二十", "三十", "四十", "五十") & Trim(Mid(all, Val(mystr(4)) Mod 10 + 1, 1)) & "分" '生成分 mystr(4) = Replace(temp, "十○分", "十分") temp = Choose(Val(mystr(5)) \ 10 + 1, "", "十", "二十", "三十", "四十", "五十") & Trim(Mid(all, Val(mystr(5)) Mod 10 + 1, 1)) & "秒" '生成秒 mystr(5) = Replace(temp, "十○秒", "十秒") datename = Join(mystr, "") End FunctionPrivate Sub Command1_Click() MsgBox datename(Now) End Sub
return: 二○○七年June二十五日八时七分八秒Monday
你用的是vb英文版吧,把12个月份和7个weekday另做替换
凑个热闹:Function CDateToString(ByVal d As Date) As String Dim s As String Dim tmp() As String Dim i As Integer Dim arr As Variant
s = Format(d, "yyyy-m-d h:m:s")
s = Replace(s, "-", Chr(32)) s = Replace(s, ":", Chr(32)) tmp = Split(s, Chr(32)) For i = 1 To UBound(tmp) tmp(i) = Switch( _ Val(tmp(i)) < 10, tmp(i), _ Val(tmp(i)) = 10, "十", _ Val(tmp(i)) > 10 And Val(tmp(i)) < 20, "十" & Right(tmp(i), 1), _ Val(tmp(i)) Mod 10 = 0, Left(tmp(i), 1) & "十", _ Val(tmp(i)) > 20, Left(tmp(i), 1) & "十" & Right(tmp(i), 1)) Next arr = Array("年", "月", "日 ", "点", "分", "秒") s = vbNullString For i = 0 To UBound(arr) s = s & tmp(i) & arr(i) Next
s = Replace(s, "0", "零") s = Replace(s, "1", "一") s = Replace(s, "2", "二") s = Replace(s, "3", "三") s = Replace(s, "4", "四") s = Replace(s, "5", "五") s = Replace(s, "6", "六") s = Replace(s, "7", "七") s = Replace(s, "8", "八") s = Replace(s, "9", "九")
http://blog.csdn.net/northwolves/archive/2004/07/21/47369.aspx 完整的将日期时间转换为汉字的代码
下面的代码可以将任意日期(1000-01-01 0:0:0------>9999-12-31 23:59:59)转换为汉字显示Function datename(ByVal mydate As String) As StringDim i As Long, mystr(6) As String, temp As String
Const all As String = "○一二三四五六七八九十"If Not IsDate(mydate) Then '错误处理
MsgBox "非正确日期格式!", vbInformation, "警告"
Exit Function
End If
mydate = CDate(mydate) '日期格式转换
For i = 0 To 6
mystr(i) = Choose(i + 1, Year(mydate), MonthName(Month(mydate)), Day(mydate), Hour(mydate), Minute(mydate), Second(mydate), WeekdayName(Weekday(mydate, vbSunday)))
Next
For i = 1 To 4 '生成年
temp = temp & Mid(all, CInt(Mid(mystr(0), i, 1)) + 1, 1) ' trans year to chinese character
Next
mystr(0) = temp & "年"
temp = Choose(Val(mystr(2)) \ 10 + 1, "", "十", "二十", "三十") & Trim(Mid(all, Val(mystr(2)) Mod 10 + 1, 1)) & "日" '生成日
mystr(2) = Replace(temp, "十○日", "十日") '避免出现 “三十○日”
temp = Choose(Val(mystr(3)) \ 10 + 1, "", "十", "二十") & Trim(Mid(all, Val(mystr(3)) Mod 10 + 1, 1)) & "时" '生成时
mystr(3) = Replace(temp, "十○时", "十时")
temp = Choose(Val(mystr(4)) \ 10 + 1, "", "十", "二十", "三十", "四十", "五十") & Trim(Mid(all, Val(mystr(4)) Mod 10 + 1, 1)) & "分" '生成分
mystr(4) = Replace(temp, "十○分", "十分")
temp = Choose(Val(mystr(5)) \ 10 + 1, "", "十", "二十", "三十", "四十", "五十") & Trim(Mid(all, Val(mystr(5)) Mod 10 + 1, 1)) & "秒" '生成秒
mystr(5) = Replace(temp, "十○秒", "十秒")
datename = Join(mystr, "")
End FunctionPrivate Sub Command1_Click()
MsgBox datename(Now)
End Sub
二○○七年June二十五日八时七分八秒Monday
Dim tmp() As String
Dim i As Integer
Dim arr As Variant
s = Format(d, "yyyy-m-d h:m:s")
s = Replace(s, "-", Chr(32))
s = Replace(s, ":", Chr(32))
tmp = Split(s, Chr(32))
For i = 1 To UBound(tmp)
tmp(i) = Switch( _
Val(tmp(i)) < 10, tmp(i), _
Val(tmp(i)) = 10, "十", _
Val(tmp(i)) > 10 And Val(tmp(i)) < 20, "十" & Right(tmp(i), 1), _
Val(tmp(i)) Mod 10 = 0, Left(tmp(i), 1) & "十", _
Val(tmp(i)) > 20, Left(tmp(i), 1) & "十" & Right(tmp(i), 1))
Next
arr = Array("年", "月", "日 ", "点", "分", "秒")
s = vbNullString
For i = 0 To UBound(arr)
s = s & tmp(i) & arr(i)
Next
s = Replace(s, "0", "零")
s = Replace(s, "1", "一")
s = Replace(s, "2", "二")
s = Replace(s, "3", "三")
s = Replace(s, "4", "四")
s = Replace(s, "5", "五")
s = Replace(s, "6", "六")
s = Replace(s, "7", "七")
s = Replace(s, "8", "八")
s = Replace(s, "9", "九")
CDateToString = s
End Function
--------------------------
Debug.Print CDateToString(Now)//
二零零七年六月二十五日 十点二十七分五十六秒
二零零七年六月二十五日 十点二十七分五十八秒
二零零七年六月二十五日 十点二十七分五十九秒
二零零七年六月二十五日 十点二十八分零秒
二零零七年六月二十五日 十点二十八分五秒
二零零七年六月二十五日 十点二十八分七秒
二零零七年六月二十五日 十点二十八分九秒
二零零七年六月二十五日 十点二十八分十二秒
二零零七年六月二十五日 十点二十八分十五秒