Ran*_*dom 7 c# globalization excel cultureinfo
我想写一个方法,从datetimeformat给我3个字母 - 代表日,月,年.
所以在en-US文化中我想要的返回值是(加上分隔符)
在de-DE中应该返回相同的方法
我查看了DateTimeFormatInfo类表单CurrentCulture,但只能找到分隔符你知道我怎么能得到其余的吗?
var culture = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(culture.DateTimeFormat.DateSeparator);
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为Excel中的TEXT函数不接受来自InvariantCulture的格式,只能从当前文化中处理它.
所以这样的东西在德语Excel版本中无效:
=TEXT(NOW();"dd.MM.yyyy")
Run Code Online (Sandbox Code Playgroud)
这需要设置
=TEXT(NOW();"TT.MM.JJJJ")
Run Code Online (Sandbox Code Playgroud)
(如果用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
Run Code Online (Sandbox Code Playgroud)
编辑: 我不确定您想如何使用它,但是,例如,插入与上面类似的公式(例如: =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
Run Code Online (Sandbox Code Playgroud)
=================================================== =
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |