在C#中创建Java System.currentTimeMillis()的两种方式产生不同的输出

时间:2018-08-01 18:32:37

标签: c# .net datetime

我需要C#中等效的Java System.currentTimeMillis。基于System.currentTimeMillis的定义:

  

当前时间与当前时间之间的差(以毫秒为单位)   1970年1月1日午夜(UTC)

我想出了两种方法:

方法1:使用DateTime.UtcNowDateTimeKind.Utc

(long)(DateTime.UtcNow 
    - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds

方法2:使用DateTime.NowDateTimeKind.Local

(long)(DateTime.Now 
    - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds

结果:

方式1:15331 4 8186919->这是正确的答案。

WAY 2:15331 3 0186929

任何人都知道为什么WAY 2产生错误的结果吗?

1 个答案:

答案 0 :(得分:0)

这可以用DST来解释。这可能是#2的一个因素,具体取决于调用计算机的区域设置DateTime.Now的时间以及时间。