如何将JavaScript日期对象转换为刻度?在数据同步之后,我想使用刻度来获取C#应用程序的确切日期。
Answers:
如果要将DateTime对象转换为通用刻度,请使用以下代码片段:
var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);
毫秒内有10000个滴答声。和1之间621.355.968.000.000.000蜱ST一月0001 1日1970年1月。
JavaScriptDate类型的起源是Unix纪元:1970年1月1日午夜。
.NETDateTime类型的起源是0001年1月1日午夜。
您可以Date按如下方式将JavaScript对象转换为.NET标记:
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);
(621355968e9 + (new Date()).getTime() * 1e4)一旦了解,就可以将这4条线压缩下来。大分享@LukeH
扩展接受的答案,635646076777520000并添加原因。
Javascriptnew Date().getTime() or Date.now()将返回从传递的毫秒数midnight of January 1, 1970。
在.NET中(部分下的源代码Remarks)
DateTime值类型表示日期和时间,其值在公历时间范围是0001 Anno Domini(公共时代)从00:00:00(午夜)到9999年12月31日下午11:59:59(公历)。日历。
621355968000000000是从midnight Jan 1 01 CE到的刻度值midnight 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中的日期也包含偏移量。如果您需要摆脱它,请使用以下命令:
return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);
我使用Skeikh的解决方案并减去“偏移”的刻度。
utcnow刻度(相对于1970年)注入刻度并存储该值与+new Date()页面开始之间的差异来进行补偿。然后,所有日期/时间都可以偏移该金额。然后,任何错误都将降至页面等待时间。