【问题标题】:How to change the locale of a formatted date?如何更改格式化日期的语言环境?
【发布时间】:2013-06-05 08:04:00
【问题描述】:

我想用英文月份名称以特定格式检索今天的日期。

我正在使用 Format(DateValue(Now), "dd-mmm-yyyy"), 这给了我 05-cze-2013, 这是波兰语。我想要得到的是 05-Jan-2013.

我只对 VBA 解决方案感兴趣。还请提供一种将语言环境设置回原始设置的方法,同样使用 VBA。

【问题讨论】:

    标签: vba locale date-format


    【解决方案1】:

    这并不难......

    Sub VBA_Dates_Format()
        Cells.Clear
        Range("A1").Value = Now
        Range("A2").Value = Now
        ' Polish
        Range("A1").NumberFormat = "[$-415]d mmm yy;@"
        ' English UK
        Range("A2").NumberFormat = "[$-809]d mmm yy;@"
    End Sub
    

    我通过录制和修改宏以符合标准来实现这一点。


    Further reading available here

    【讨论】:

    • Mehow,真是令人印象深刻。我以前没有见过这个技巧。你有进一步阅读的链接吗?我真的很想了解您是如何做到这一点的。
    • @tbur ive 录制并编辑了一个宏,但我也提供了一个有用的链接,以防您想更深入地挖掘
    • 如何使用字符串变量执行此操作? Dim myDate As String: myDate = Format(DateValue(Now), "[$-409]mmmm yyyy") 不起作用,月份仍然是英文(我的操作系统语言)...
    • 我知道这是旧的,但希望这有助于更多的人理解语言环境代码。 `-409' 代表 en-US 语言。没有,更多也没有更少。使用它定义了您需要使用哪些变量来链接年、日、月等...有关区域设置代码的更完整列表,以及如何更改实际语言和/或数字文本,请在此处查看此答案。 stackoverflow.com/questions/54134729/…
    【解决方案2】:

    它不是干净的 VBA,但它是一种在字符串中获取本地化格式化日期的方法。 Format 函数不能做的事情。

    With Range("$A$1")
        .NumberFormat = "[$-809]dd mmmm"
        .FormulaR1C1 = "=NOW()"
        tmp = .Text
        .NumberFormat = "@"
        .Value = CStr(tmp)
    End With
    

    有关本地化格式的更多信息我很好的回答 https://stackoverflow.com/a/899290 来自 Ian Boyd

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多