DateTime从当前文化中获取代表日,月,年的字母

我想写一个方法,从date时间格式给我3个字母,代表日,月,年。

所以在美国文化中,我想要的回报值是(加分隔符)

  • d
  • 中号
  • ÿ
  • /

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

  • T(TAG =日)
  • M( M onat =月)
  • J( J ahr =年)
  • 。 (分隔器)

我看了一下DateTimeFormatInfo类的formsCurrentCulture,但只能find分隔符,你有什么想法我可以得到其余的?

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

我需要这个,因为Excel中的TEXT函数不接受来自InvariantCulture的格式,只能从currentculture处理它。

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

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

这需要设置

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

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

string格式可以是任何东西,因为用户可以随意input它,我需要把它翻译成当前的文化。

你可以在VBA中做到这一点:DateTimeStrings将返回一个数组的date代码和分隔符。

 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和适当的语言,您可以selectA1并运行下面的macros:

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

 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 

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