【问题标题】:VBA convert string to date formatVBA 将字符串转换为日期格式
【发布时间】:2013-12-19 03:16:43
【问题描述】:

我有一个包含格式为 YYMMDD 的字符串的文件。例如。 120216(将始终采用这种格式)。

我想将其转换为理想的日期,格式为 DDMMYY 或 DDMMYYYY。

有没有人遇到过类似的问题,他们是如何解决的?

【问题讨论】:

  • 如果您要投反对票,请至少为线程做出贡献。仅供参考,下面的答案对我的场景没有 100% 有效,我仍然需要进行一些调整,并且涉及很多小技巧
  • 那么你首先尝试了什么代码 - 很清楚为什么这被否决了。

标签: excel vba date


【解决方案1】:

您可以拆分字符串,然后使用DateSerial。请参阅此示例。

Option Explicit

Sub Sample()
    Dim sDate As String
    Dim Y As Long, M As Long, D As Long

    sDate = "120216"
    Y = Left(sDate, 2)
    M = Mid(sDate, 3, 2)
    D = Right(sDate, 2)

    Debug.Print Format(DateSerial(Y, M, D), "DDMMYY")
    Debug.Print Format(DateSerial(Y, M, D), "DDMMYYYY")
End Sub

来自 cmets 的跟进

谢谢,我可能不得不编写一个函数,我可以在其中传递字符串日期以进行转换。是否有机会将 Debug... 行保存到变量中? (似乎不能)或替代工作? – Marco Susilo 4 分钟前

我没有进行任何错误处理。我确定你可以解决这个问题?

Option Explicit

Sub Sample()
    Dim Ret As String

    Ret = GetDate("120216", "DDMMYY")

    Debug.Print Ret

    Ret = GetDate("120216", "DDMMYYYY")

    Debug.Print Ret
End Sub

Function GetDate(sDate As String, sFormat As String) As String
    Dim Y As Long, M As Long, D As Long

    Y = Left(sDate, 2)
    M = Mid(sDate, 3, 2)
    D = Right(sDate, 2)

    GetDate = Format(DateSerial(Y, M, D), sFormat)
End Function

【讨论】:

  • @andyholaday:干杯!修复它:)
  • 谢谢,我可能需要编写一个函数,在其中传入字符串日期以进行转换。是否有机会将 Debug... 行保存到变量中? (似乎不能)或替代解决方法?
  • @MarcoSusilo:是的。请参阅更新后的帖子。您可能需要刷新页面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 1970-01-01
  • 2014-01-18
  • 2019-10-13
相关资源
最近更新 更多