有没有人知道一种声明与国际日期兼容的日期常量的方法?
我试过了:
' not international compatible
public const ADate as Date = #12/31/04#
' breaking change if you have an optional parameter that defaults to this value
' because it isnt constant.
public shared readonly ADate As New Date(12, 31, 04)
Run Code Online (Sandbox Code Playgroud)
根据微软文档,
“您必须将日期文字括在数字符号 (##) 内。您必须以 M/d/yyyy 格式指定日期值,例如 #5/31/1993#。此要求与您的区域设置和计算机无关日期和时间格式设置。”
您是说这是不正确的并且解析受到当前语言环境的影响?
编辑:您尝试过使用 4 位数的年份吗?
如果你看一下该语句生成的IL
public const ADate as Date = #12/31/04#
Run Code Online (Sandbox Code Playgroud)
你会看到这个:
.field public static initonly valuetype [mscorlib]System.DateTime ADate
.custom instance void [mscorlib]System.Runtime.CompilerServices.DateTimeConstantAttribute::.ctor(int64) = ( 01 00 00 C0 2F CE E2 BC C6 08 00 00 )
Run Code Online (Sandbox Code Playgroud)
请注意,DateTimeConstantAttribute正在使用一个带有int64滴答计数的构造函数进行初始化.由于此滴答计数是在compilile时确定的,因此在运行时初始化此值时,似乎不太可能发生任何本地化.我的猜测是错误是代码中的其他日期处理,而不是const初始化.