我应该如何将 JavaScript 日期对象转换为刻度?我想在数据同步后使用刻度来获取我的 C# 应用程序的确切日期。
如何将 JavaScript 日期对象转换为刻度
IT技术
c#
javascript
2021-02-27 11:35:49
6个回答
如果要将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 日午夜。
您可以将 JavaScriptDate
对象转换为 .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);
如果“滴答”的意思是“自纪元以来的毫秒数”,则可以调用“.getTime()”。
var ticks = someDate.getTime();
从MDN 文档中,返回的值是
整数值,表示自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来的毫秒数。
扩展已接受的答案,因为635646076777520000
添加了原因。
Javascriptnew Date().getTime() or Date.now()
将返回从midnight of January 1, 1970
.
在 .NET 中(部分下的源代码Remarks
)
DateTime 值类型表示日期和时间,其值范围从 0001 年 1 月 1 日 Anno Domini(共同时代)到 11:59:59 PM,公元 9999 年 12 月 31 日(CE)在公历中日历。
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 的解决方案并减去“偏移量”的刻度。
其它你可能感兴趣的问题