我的数据库中有以下值:637406344505540000,表示UTC时间。
当我运行这行代码时。
return new DateTime(ticks, DateTimeKind.Local); // it returns 11/10/2020 7:47:30 PM
我试图将Kind设置为UTC,但它返回的结果相同。
这是我在Visual studio 的即时窗口中执行的结果
new DateTime(637406344505540000, DateTimeKind.Local);
{11/10/2020 7:47:30 PM}
Date: {11/10/2020 12:00:00 AM}
Day: 10
DayOfWeek: Tuesday
DayOfYear: 315
Hour: 19
Kind: Local
Millisecond: 554
Minute: 47
Month: 11
Second: 30
Ticks: 637406344505540000
TimeOfDay: {19:47:30.5540000}
Year: 2020
new DateTime(637406344505540000, DateTimeKind.Utc);
{11/10/2020 7:47:30 PM}
Date: {11/10/2020 12:00:00 AM}
Day: 10
DayOfWeek: Tuesday
DayOfYear: 315
Hour: 19
Kind: Utc
Millisecond: 554
Minute: 47
Month: 11
Second: 30
Ticks: 637406344505540000
TimeOfDay: {19:47:30.5540000}
Year: 2020
在我看来,对于Kind local,它应该返回以下内容:2020年11月10日星期二14:47:30 GMT-0500(东部标准时间(
有一个网络工具帮助我明白我的价值观是正确的。
https://grammarofdev.blogspot.com/2017/02/c-ticks-to-datetime.html
它显示了与我的数据库中的刻度相对应的本地值和UTC值。
有什么事情我做得不对吗?
DateTimeKind
仅用于分配Kind
属性。它不会更改由Ticks
表示的墙时间。
由于您的值是以UTC存储的,因此首先使用UTC类型创建DateTime
,然后将其转换为当地时间(如果您需要的话(。
DateTime dt = new DateTime(637406344505540000, DateTimeKind.Utc).ToLocalTime();