C#日期时间(以纳秒为单位)与UTC和本地时间相比



我的数据库中有以下值: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();

相关内容

  • 没有找到相关文章

最新更新