我在日志文件中有Date。日志文件中的日期如下所示:
2012年5月14日星期一21:31:00
我想将其转换为格式“dd-MM-yyyy hh:mm:ss”
Dim DateVal1 As String
Dim Date1 As Date
DateVal1 = "Mon May 14 21:31:00 EDT 2012"
Date1 = Format(DateVal, "ddd mmm dd hh:mm:ss EDT yyyy")
Date1 = Format(Date1 , "dd-MM-yyyy hh:mm:ss")
以下代码未转换为我期望的格式。任何想法,如果我在这里遗漏了什么。
由于
答案 0 :(得分:1)
您可能需要先考虑从自定义日期时间字符串中提取日期时间组件。例如,您可以获得日,月,年等。您可以使用字符串操作函数,例如Mid
,Replace
等。
如果您的自定义字符串是一致的,那么您可以创建自己的函数来执行字符串操作并输出日期时间值。
在这里想一想。希望它有所帮助。
答案 1 :(得分:0)
如果您运行的是英文版Office(并且具有英文操作系统),此功能应该提供您需要的结果:
2012年5月14日星期一21:31:00 EDT 2012>> 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