如果您正在运行英文版的 Office(并且拥有英文操作系统),此功能应该会提供您需要的结果:
美国东部时间 2012 年 5 月 14 日星期一 21:31:00 >> 2012-05-14 21:31:00
Function DateConversion(DateVal1 As String)
Dim DateParts As Variant
DateParts = Split(DateVal1, " ")
Dim i
For i = 1 To 12
If InStr(1, Left(MonthName(i), 3), DateParts(1), vbTextCompare) > 0 Then Exit For
Next i
DateConversion = CDate(DateSerial(DateParts(UBound(DateParts)), i, DateParts(2)) & " " & DateParts(3))
End Function
但是,如果您使用任何其他语言,则可能需要对月份名称进行一些额外的更改(MonthName 函数以您的系统语言返回月份名称)。
编辑:不同语言月份名称情况的解决方案
在这种情况下,我们需要创建带有月份名称的附加数组,以便能够比较原始数据字符串的一部分。
Function DateConversionEng(DateVal1 As String)
Dim DateParts As Variant
DateParts = Split(DateVal1, " ")
Dim Months As Variant
Months = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "Octover", "November", "December")
Dim i
For i = 1 To 12
If InStr(1, Months(i), DateParts(1), vbTextCompare) > 0 Then Exit For
Next i
DateConversionEng = CDate(DateSerial(DateParts(UBound(DateParts)), i + 1, DateParts(2)) & " " & DateParts(3))
End Function