如何更改格式化日期的语言环境?

Posted

技术标签:

【中文标题】如何更改格式化日期的语言环境?【英文标题】: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。

【问题讨论】:

【参考方案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 语言。没有,更多也没有更少。使用它定义了您需要使用哪些变量来链接年、日、月等...有关区域设置代码的更完整列表,以及如何更改实际语言和/或数字文本,请在此处查看此答案。 ***.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://***.com/a/899290 来自 Ian Boyd

【讨论】:

以上是关于如何更改格式化日期的语言环境?的主要内容,如果未能解决你的问题,请参考以下文章

怎么更改电脑日期格式

如何解析已使用不同语言环境格式化的日期

如何从日期选择器设置语言环境格式?

C++ - 如何以独立于平台、线程安全的方式以用户首选的日期/时间语言环境格式格式化文件的最后修改日期和时间

从 DatePicker SwiftUI 更改选定的日期格式

如何根据语言环境仅显示日期的日期和月份?