在VBA中将字符串转换为正确的日期格式

时间:2016-04-25 14:40:17

标签: excel-vba vba excel

我有很长的日期列表,格式为:YYYY-MM-DDDD/MM/YYYY。我使用CDate()进行转换。但是,如果系统默认日期为YYYY-MM-DD,则会从DD/MM/YYYY转换错误的日期,如果Day小于13,则Day和Month会混淆。例如:

date_string = "12/02/2016"
date_string = Cdate(date_string)
Debug.Print date_string #prints "2016-12-02"

我理解CDate()在很大程度上取决于系统和字符串格式。我想知道是否有一个很好的方法来捕捉日月和正确的转换?该列表始​​终只包含两种提到的日期格式。

1 个答案:

答案 0 :(得分:1)

正如@Rory所指出的,以下功能应该可以解决问题:

Function ConvertDate(strTMP As String)

Select Case True
    Case InStr(1, strTMP, "-", vbTextCompare) > 0
        ConvertDate = DateSerial(Split(strTMP, "-")(0), Split(strTMP, "-")(1), Split(strTMP, "-")(2))
    Case InStr(1, strTMP, "/", vbTextCompare) > 0
        ConvertDate = DateSerial(Split(strTMP, "/")(2), Split(strTMP, "/")(1), Split(strTMP, "/")(0))
    Case Else
        ConvertDate = "error"
End Select

End Function