如何将JavaScriptdate对象转换为刻度

我应该如何将JavaScriptdate对象转换为ticks? 我想在数据同步之后使用滴答来获取C#应用程序的确切date。

如果你想把你的date时间对象转换成通用的滴答,然后使用下面的代码片段

  var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000); 

从Ist 1900年1月到1970年1月,这里有621355968000000000时代的记号。这里10000是每毫秒的记号。

JavaScript Datetypes的起源是Unix纪元:1970年1月1日午夜。

.NET DateTimetypes的起源是0001年1月1日午夜。

您可以将JavaScript Date对象转换为.NET ticks,如下所示:

 var yourDate = new Date(); // for example // the number of .net ticks at the unix epoch var epochTicks = 621355968000000000; // there are 10000 .net ticks per millisecond var ticksPerMillisecond = 10000; // calculate the total number of .net ticks for your date var yourTicks = epochTicks + (yourDate.getTime() * ticksPerMillisecond); 

如果通过“嘀嗒”表示类似于“自时代以来的毫秒”,则可以调用“.getTime()”。

 var ticks = someDate.getTime(); 

从MDN文档中 ,返回值是

整数值表示自1970年1月1日00:00:00 UTC(Unix Epoch)以来的毫秒数。

为什么增加635646076777520000为什么扩大接受的答案。

Javascript new Date().getTime() or Date.now()将返回从midnight of January 1, 1970传递的毫秒数。

在.NET中( 源代码在Remarks部分)

DateTime值types表示date和时间,值从00:00:00(午夜),0001年1月1日Anno Domini(共同时代)到公元9999年12月31日11:59:59 PM(公历)日历。

621355968000000000是从midnight Jan 1 01 CE midnight Jan 1 1970midnight Jan 1 1970的蜱的价值

所以,在.NET中

  Console.Write(new DateTime(621355968000000000)) // output 1/1/1970 12:00:00 AM 

因此,将JavaScript时间转换为.Net刻度

  var currentTime = new Date().getTime(); // 10,000 ticks in 1 millisecond // jsTicks is number of ticks from midnight Jan 1, 1970 var jsTicks = currentTime * 10000; // add 621355968000000000 to jsTicks // netTicks is number of ticks from midnight Jan 1, 01 CE var netTicks = jsTicks + 621355968000000000; 

现在,在.NET中

  Console.Write(new DateTime(netTicks)) // output current time 

JavaScript中的date还包含偏移量。 如果你需要摆脱它使用以下内容:

 return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000); 

我使用Skeikh的解决scheme,并减去'抵消'的滴答声。

这应该是date.GetTime() 。 请注意,C#和JavaScript使用不同的初始date,所以使用这样的东西来转换为C#date时间。

 public static DateTime GetDateTime(long jsSeconds) { DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0); return unixEpoch.AddSeconds(jsSeconds); }