簡體   English   中英

在Excel VBA中更改日期格式

[英]Change Date format in Excel VBA

我在日志文件中有日期。 日志文件中的日期看起來像這樣:

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")

以下代碼未轉換為我期望的格式。 任何想法,如果我在這里錯過了一些東西。

謝謝

您可能要考慮首先從自定義日期時間字符串中提取日期時間組件。 例如,您可以獲取日,月,年等。您可能可以利用字符串處理功能,例如MidReplace等。

如果您的自定義字符串是一致的,則可以創建自己的函數來執行字符串操作並輸出datetime值。

這里只是一個想法。 希望能幫助到你。

如果您正在運行英文版的Office(並具有英文操作系統),則此功能應提供所需的結果:

2012年5月14日星期一5:14 EDT >> 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM