首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NETDATE CONST?

.NETDATE CONST?
EN

Stack Overflow用户
提问于 2017-12-27 03:59:24
回答 3查看 0关注 0票数 0

有没有人知道如何声明与国际日期兼容的日期常数?

我试过:

' 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)
EN

回答 3

Stack Overflow用户

发布于 2017-12-27 11:38:13

如果你查看生成的IL语句

public const ADate as Date = #12/31/04#

你会看到这个:

.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 )

注意,DateTimeConstantAttribute正在使用接受int 64计数的构造函数初始化。由于此计数是在复杂时确定的,因此在运行时初始化此值时,不太可能出现任何本地化。我的猜测是,该错误与代码中的其他日期处理有关,而不是Const初始化。

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 12:18:17

根据微软的文档,

“你必须在数字符号(##)中包含日期文字。你必须以M/d/yyy格式指定日期值,例如#5/31/1993#。此要求与区域设置和计算机的日期和时间格式设置无关。“

你是说这是不正确的,并且解析受到当前区域设置的影响吗?

编辑:你试过四位数的年份吗?

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 13:08:36

在VB中将数据放入日期对象之后,您就不必担心,除非你将数据与之进行比较或尝试导出它。

这很好:

Dim FirstDate as Date = Date.UtcNow() 'or this: = NewDate (2008,09,10)'
Dim SecondDate as Date

SecondDate = FirstDate.AddDays(1)

这将引入规则,并以当前线程的区域性格式打印:

HeaderLabel.Text = SecondDate.ToString()

这是不好的:

Dim BadDate as Date = CDate("2/20/2000")

实际上--即使这样,如果您强制CDate在这种情况下使用正确的区域性(InvariantCulture),也可以:

Dim OkButBadPracticeDate as Date = CDate("2/20/2000", CultureInfo.InvariantCulture)

如果要将所有内容强制到特定区域性,则需要将执行中的线程区域性和UI区域性设置为所需的区域性(en-US、不变量等)。

确保您没有将日期作为字符串进行任何操作--确保它们是实际的日期对象!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档