c# - DateTime 从当前文化中获取代表日、月、年的字母

标签 c# excel globalization cultureinfo

我想编写一个方法,根据日期时间格式为我提供 3 个字母 - 代表日、月、年。

所以在 en-US 文化中我想要的返回值是(加上分隔符)

  • d
  • M
  • /

在 de-DE 中应该返回相同的方法

  • T(Tag = 天)
  • M(M月 = 月)
  • J(Jahr = 年)
  • >。 (分隔符)

我查看了 DateTimeFormatInfo类(class)表格CurrentCulture但只能找到分隔符你知道我怎样才能得到其余的吗?

var culture = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(culture.DateTimeFormat.DateSeparator);

我需要这个,因为 Excel 中的 TEXT 函数不接受来自 InvariantCulture 的格式,只处理来自当前文化的格式。

所以这样的东西在德语 Excel 版本中是无效的:

=TEXT(NOW();"dd.MM.yyyy")

这需要设置

=TEXT(NOW();"TT.MM.JJJJ")

(如果用 VBA 完成并不重要,它不会被翻译) 你可以看看下面的http://www.rondebruin.nl/win/s9/win013.htm

字符串格式可以是任何格式,用户可以随意输入,我需要将其翻译成当前的文化。

最佳答案

您可以在 VBA 中执行此操作: DateTimeStrings 将返回日期代码和分隔符的数组。

Option Explicit
Function DateTimeStrings() As Variant
    Dim s(3)
    With Application
        s(0) = .International(xlDayCode)
        s(1) = .International(xlMonthCode)
        s(2) = .International(xlYearCode)
        s(3) = .International(xlDateSeparator)
    End With

DateTimeStrings = s

Debug.Print s(0), s(1), s(2), s(3)

End Function

编辑: 我不确定你想如何使用它,但是,例如,插入一个类似于你上面的公式,(例如:=TEXT(A1 ,"dd/mm/yyy") 在 B1 和适当的语言中,您可以选择 A1 并运行以下宏:

=============================================

Sub AddTextFunction()
    Dim R As Range, C As Range
    Dim sFormula As String
    Dim V As Variant
     Dim D As String, M As String, Y As String, sep As String

Set R = Selection

For Each C In R
    V = DateTimeStrings()
        D = V(0)
        M = V(1)
        Y = V(2)
        sep = V(3)

    sFormula = "=text(RC[-1],""" & D & D & sep & M & M & sep & Y & Y & Y & """)"
    C.Offset(0, 1).FormulaR1C1 = sFormula
Next C

End Sub

============================================= ====

关于c# - DateTime 从当前文化中获取代表日、月、年的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965596/

相关文章:

Excel-VBA : is there a VBA command that reads it's own line number

c# - Windows .NET 框架的所有可用语言列表

c# - Windows 窗体应用程序 - MySQL - 无法从 'string' 转换

c# - 如何在 PDF 文件的文件属性的详细信息选项卡中添加关键字

c# - 如何在本地管理 Azure Durable 功能任务中心?

c# - 提供的 URI 方案 'https' 无效;预计 'http' 。参数名称 : via

objective-c - 在 Apple Swift 中解析 Excel 数据

Excel从动态表中获取网络数据

c# - Azure 不支持外语文件格式名称下载

javascript - 本地化不适用于 Node.js 中的强全局化