首页 > 解决方案 > VBA将带有日期和月份名称的字符串转换为日期

问题描述

我有一个stringdate格式的法语,像这样:

mardi 7 juillet 2020

如何将其转换为 VBA 中的日期类型?我尝试使用CDate,DateValueDateSerial,但我无法弄清楚。如果 VBA 具有Long Date日期格式,则必须有一种方法。我只是找不到任何人用这种格式提出这个转换问题。

请注意,我有很多日期,因为我要循环处理许多邮件,所以我需要一个非常通用的解决方案,所以一个解决方案考虑到所有可能的工作日(lundi,mardi,...,dimanche),所有可能的日子1 到 31 和 Janvier 到 12 月和所有可能的年份。

感谢您的帮助。

标签: vbastringdatetype-conversion

解决方案


我同意应该有一个更容易的转换。此函数将去掉工作日(这是多余的),然后依靠 VBA 类型转换来获取日期类型(注意。我只在英语(英国)区域设置下测试过这个)。

Option Explicit
Public Function DateFromLongFormat(strLongFormatDate As String) As Date
    Dim strDate As String
    strDate = Right(strLongFormatDate, Len(strLongFormatDate) - InStr(1, strLongFormatDate, " "))

    DateFromLongFormat = strDate
End Function

在今天的日期使用一个简单的测试例程进行了尝试:

Sub TestDate()
    Dim strToday As String
    strToday = Format(Now(), "dddd dd mmmm yyyy")

    Dim dt As Date
    dt = DateFromLongFormat(strToday)
End Sub

推荐阅读