首页 > 解决方案 > 具有不同系统设置的正确格式的当前 UTC 时间

问题描述

我在 Excel 中有一个宏,它使用当前的 UTC 时间(小时和分钟)作为字符串,最后将(除其他外)作为文本写入新的 Word 文档中。目前它在我的计算机上运行良好,但它也可以在不同的计算机上使用,这些计算机可能对日期时间格式有不同的系统设置。由于这些设置都无法更改,我也无法全面了解所有不同的设置,因此我需要在宏中添加一个部分,最终始终为我提供相同的格式。我需要实现的格式是 HHMM(在 24 小时内,而不是 AM/PM),例如:1430。如果系统时间是这种格式,我现在的代码会这样做:“DD/MM/YYYY HH:MM: SS”。不幸的是,它没有考虑其他诸如“DD/MM/YYYY H:MM”之类的问题。有没有简单的方法来解决这个问题?我现在拥有的代码如下。

Public Sub UTCtime()

Dim dt As Object, utc As Date, utcHOUR As String

Set dt = CreateObject("WbemScripting.SWbemDateTime")
    dt.SetVarDate Now
    utc = dt.GetVarDate(False)
    utcHOUR = utc
    utcHOUR = Replace(utcHOUR, ":", "")
    utcHOUR = Replace(utcHOUR, " ", "")
    utcHOUR = Right(utcHOUR, 6)
    utcHOUR = Left(utcHOUR, 4)
    utcHOUR = utcHOUR + "Z"

End Sub

标签: excelvba

解决方案


dt.GetVarDate()返回一个Date调整为 UTC 的类型,这是与格式无关的(直到被强制转换为字符串),所以很简单:

strUTCTime = Format$(utc, "HHMM") & "Z"

推荐阅读