如何将2007-6-5 8:23:45 时间格式转换为 二零零七年六月五日 八点二十三分四十五秒,求助呀.各位高手.

解决方案 »

  1.   

    很久很久前写的:
    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
      

  2.   

    return:
    二○○七年June二十五日八时七分八秒Monday
      

  3.   

    你用的是vb英文版吧,把12个月份和7个weekday另做替换
      

  4.   

    凑个热闹: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", "九")
        
        CDateToString = s
        
    End Function
      

  5.   

    楼上的秒不显示吧
    --------------------------
    Debug.Print CDateToString(Now)//
    二零零七年六月二十五日 十点二十七分五十六秒
    二零零七年六月二十五日 十点二十七分五十八秒
    二零零七年六月二十五日 十点二十七分五十九秒
    二零零七年六月二十五日 十点二十八分零秒
    二零零七年六月二十五日 十点二十八分五秒
    二零零七年六月二十五日 十点二十八分七秒
    二零零七年六月二十五日 十点二十八分九秒
    二零零七年六月二十五日 十点二十八分十二秒
    二零零七年六月二十五日 十点二十八分十五秒