2015-07-10 91 views
0

我在javascript使用计算TimeStamp下面的代码时间戳是不同的

var timestamp = new Date;

,让我产生1436504446858包含13数字取决于当前时间。

同样的事情在C#使用下面的代码

DateTime centuryBegin = new DateTime(1970, 1, 1); 
DateTime currentDate = DateTime.Now; 
long elapsedTicks = currentDate.Ticks - centuryBegin.Ticks; 

在这里,我得到了导致14365252465308044包含17数字

为什么这两种方法给出了如此大的差别的计算?

回答

6

为什么这两种方法有很大的区别?

自从Unix时代以来,Javascript代码为您提供了毫秒的编号。因为Unix时代以来,.NET代码(如果你正确的话 - 一秒钟更多)将给你刻度的数量。每秒钟有1000万个刻度,所以每毫秒有10000个刻度。这就是为什么你会得到4位数字。

现在,另一个问题是,你的.NET代码使用本地时间 - 而它应该反映UTC时间,因为你发现自Unix蜱(或毫秒)的数量时代,这是1970年1月1日午夜UTC。所以,你想:

DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
DateTime utcNow = DateTime.UtcNow; 
TimeStamp elapsedTime = utcNow - unixEpoch; 
double millis = elapsedTime.TotalMilliseconds; 

注意如何,如果你代表的时间差为TimeSpan,你可以将它转换为你感兴趣的单位(虽然TimeSpan只是“时间的长度”,这不知道一个开始/结束,所以你不能用它来找出可变长度的单位,如年和月的差异。)

+0

感谢乔恩,你真的很好... –

相关问题