C#Javascript日期/时间不匹配
下面是Chrome开发控制台中的js代码C#Javascript日期/时间不匹配,javascript,c#,Javascript,C#,下面是Chrome开发控制台中的js代码 new Date(1560780000000) 屈服 2019年6月18日星期二00:00:00 GMT+1000(澳大利亚东部标准时间) 然而,在同一台机器上的c#中,这会产生 new DateTime(1970, 1, 1).AddMilliseconds(1560780000000); 2019年6月17日14:00:00 使用 屈服 2019年6月18日01:00:00 日期还差一个小时。我试图将JS日期准确地转换为C#DateTime。我无
new Date(1560780000000)
屈服
2019年6月18日星期二00:00:00 GMT+1000(澳大利亚东部标准时间)
然而,在同一台机器上的c#中,这会产生
new DateTime(1970, 1, 1).AddMilliseconds(1560780000000);
2019年6月17日14:00:00
使用
屈服
2019年6月18日01:00:00
日期还差一个小时。我试图将JS日期准确地转换为C#DateTime。我无法从DateTime更改方法的签名,有人能帮忙吗
这给了我同样的结果:
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(1560780000000)
还是这个
new DateTime(1970, 1, 1).AddMilliseconds(1560780000000).ToLocalTime()
它们不是100%等价的,但第二个将创建一个日期,其种类未指定
,当您调用ToLocalTime()
时,该日期假定为UTC
如果在addmillizes()
之前或之后调用ToLocalTime()
的区别似乎在于夏令时。根据日期的不同,相同的当地时间将有不同的解释。因此,您应该始终以UTC进行所有计算,我假定,最后只转换为本地时间进行检查
问题是你增加了毫秒数,这使得DST在夏天会有所不同(我认为)
更多细节。这给了我同样的结果:
new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(1560780000000)
还是这个
new DateTime(1970, 1, 1).AddMilliseconds(1560780000000).ToLocalTime()
它们不是100%等价的,但第二个将创建一个日期,其种类未指定
,当您调用ToLocalTime()
时,该日期假定为UTC
如果在addmillizes()
之前或之后调用ToLocalTime()
的区别似乎在于夏令时。根据日期的不同,相同的当地时间将有不同的解释。因此,您应该始终以UTC进行所有计算,我假定,最后只转换为本地时间进行检查
问题是你增加了毫秒数,这使得DST在夏天会有所不同(我认为)
更多详细信息。要获取JavaScript中的UTC时间戳:
new Date(1560780000000).toJSON(); // "2019-06-17T14:00:00.000Z"
C#:
要在JavaScript中获取UTC时间戳,请执行以下操作:
new Date(1560780000000).toJSON(); // "2019-06-17T14:00:00.000Z"
C#:
本地化和格式化,尤其是
.ToString(字符串格式)
。您还可以尝试newdatetime(numberOfTicks)
。那么DateTimeOffset.fromUnixtimemissions(15607800000000)呢。DateTime
是否给出了正确的结果?那么改为.UtcDateTime
呢?如果不是这样,我认为“问题”将归结为本地日期时间(始终假定系统的当前偏移量)本地化和格式的处理,特别是.ToString(字符串格式)
。您还可以尝试newdatetime(numberOfTicks)
。那么DateTimeOffset.fromUnixtimemissions(15607800000000)呢。DateTime
是否给出了正确的结果?那么改为.UtcDateTime
呢?如果不是,我认为“问题”将归结为本地日期时间的处理(总是假设系统的当前偏移量)