现有我有个大小写日期转换问题如:
2007 要转换成: 二○○七  同理:2006  二○○六,12  十二,30  三十,5  五
例如:
2007  12  21  要转换成: 二○○七 十二 二十一 由于年月日我是用三个文本框分开了的,所以得出日期也是三个年月日分开的了。
如果有如:2007-12-21 转换成: 二○○七年十二月二十一日的代码函数也行,
多谢提供!!!

解决方案 »

  1.   

    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
      

  2.   

    if 0分 And 挑衅 then
    msgbox "此人极度危险!"
    end if
      

  3.   

    vbman2003(家人) ( ) 信誉:100 
    多谢!!!
      

  4.   

    Val(tmp(i)) > 20, Left(tmp(i), 1) & "十" & Right(tmp(i), 1))
    这里还差一点,我补进去了,注意一月中的天数,最多只能是31天,月份中是大只能是12,所以这里没有判断!!!
      

  5.   


    因为参数是Date,必须是日期类型数据,所以你说的判断没必要
    这只是个示例,没做错误处理
      

  6.   

    你也可以改参数为string,然后用isdate判断是不是正确的日期,或者在format时用cdate转换一下,结合错误处理来解决。不要在Switch中判断