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
================================================== =