VBA - 转换为日期

18

我又遇到了一个问题:

我想在 VBA 中将字符串转换为日期。

这些字符串的格式是:YYYY-DD-MM

日期应该是:DD.MM.YYYY

通常情况下我们可以使用 cdate() 方法来完成转换,但是这里不起作用。 我认为这是因为要转换的字符串结构有问题。

感谢您的帮助!

InformatikBabo


你想将它转换为另一种格式的字符串,还是想要一个日期对象? - user2140173
只想评论一下,CDate() 似乎不能处理像 "20200109" 这样的字符串。它可以处理带破折号的字符串 "2020-01-09",但无法处理没有破折号的字符串。我不得不将该字符串拆分成三个部分,然后重新组合它们并加上破折号,才能使用 CDate()。我现在意识到我可以用 Format() 转换该字符串,但更重要的是 CDate() 似乎只能处理特定格式的字符串。 - MBB70
2个回答

29
Sub Main()

    Dim strDate As String
    strDate = "2013-06-11"

    Debug.Print "Original Date: ", strDate
    Debug.Print "CDate() Conversion: ", CDate(strDate)
    Debug.Print "Format() as String: ", Format(strDate, "DD.MM.YYYY")

End Sub

而立即窗口显示

enter image description here


0

试试这个大小。

这将返回一个以不同格式的“date”作为前一天的字符串!!

传递的字符串等于这个格式"08/01/2023"。

Function SdateD(byref Dstring) as String
Dim NewDateD 'undefined

    NewDateD = CDate(Dstring) ' This will convert it to #08/01/2023#
    NewDateD = NewDateD - 1 ' now it is #07/31/2023#
    Dstring = Format(Cstr(NewDateD), "m.d.yy") ' it will return the value 7.31.23

End Function

我从一个 MSWord 文档中提取了一个日期。 08/01/2023

这是文件创建后的日期。

我希望将文件名更改为包含实际日期。 文档名称中不能使用 "/",因为它是目录的分隔符。

所以这个有效:

  RenameFile OriginalFN & ".Docx", OriginalFN & SdateD(Dstring) & ".Docx"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接