我想写一个方法,从datetimeformat给我3个字母-分别代表日,月,年。
因此,在美国文化中,我期望的返回值为(加上分隔符)
在de-DE中,应返回相同的方法
我查看了DateTimeFormatInfo类形式的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
编辑:我不确定您要如何使用它,例如,要插入一个与您上面的公式类似的公式(例如:用B1和适当语言的
=TEXT(A1,"dd/mm/yyy")
,您可以选择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/