VBA将自定义日期字符串转换为日期和时间

时间:2014-12-19 17:01:07

标签: excel vba date time

我有这个日期TimeAndDateTZ = "2014-12-15T21:48:40Z"
我试图从中得到两个不同的变量:

期望的输出:

Date = "2014-12-15"  
Time24 = "21:48:40"  
Time12 = "09:48:40"

我知道我可以将它分开()在“T”上并替换()“Z”,但我想知道要正确地做到这一点。
我试图使用CDATE和DateValue,但是我收到了错误。

我做错了什么?

编辑: 一切都将继续用作字符串,是TimeAndDateTZ是一个字符串。

编辑#2:

(见我的回答)

3 个答案:

答案 0 :(得分:0)

DateSerial()TimeSerial()将是一个很好的起点。有关详细信息,请参阅This Tutorial。由于您的TimeAndDateTZ似乎是字符串,因此您需要提取日期和时间的各个部分,并将组件添加到DateSerial()TimeSerial()方法中。

答案 1 :(得分:0)

请考虑以下事项:

Sub dural()
    TimeAndDateTZ = "2014-12-15T21:48:40Z"
    ary = Split(Replace(TimeAndDateTZ, "Z", ""), "T")
    Datee = ary(0)
    Time24 = ary(1)
    Time12 = Split(CStr(TimeValue(Time24)), " ")(0)
    MsgBox Datee & vbCrLf & Time24 & vbCrLf & Time12
End Sub

答案 2 :(得分:0)

Sub DateTest()
    Dim strDate As String
        strDate = "2014-12-15T21:48:40Z"
    Set objRegExp = CreateObject("vbscript.regexp")
        objRegExp.Global = True
        objRegExp.IgnoreCase = True
        objRegExp.Pattern = "T[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}Z"
        If objRegExp.Test(strDate) Then entDate = objRegExp.Replace(strDate, "")
        objRegExp.Pattern = "[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2}"
        If objRegExp.Test(strDate) Then entTime = objRegExp.Replace(strDate, "")
        entTime = Replace(entTime, "T", ""): entTime = Replace(entTime, "Z", "")
End Sub