在C#中我希望UTC(+00:00)的时间为毫秒。所以我可以在带有偏移的Javascript中使用它(如下所示)。我尝试了几件事,但我没有做到这一点。
new Date(1528204115692 - (new Date().getTimezoneOffset() * 60000)).toString()
下面的代码根据我的时区给出了毫秒数。
((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds()
我希望在db中保持UTC时间毫秒,以便根据用户浏览器区域区域显示日期时间。
例如:在+03:00区域现在时间是06.05.2018 16:12:20.568
我想保持UTC区域时间(以毫秒为单位)。 (纪元时间00:00)
你能帮忙吗?
谢谢
答案 0 :(得分:1)
您的C#代码是正确的。
来自mozilla:
新日期(价值);
值
整数值,表示自1970年1月1日00:00:00 UTC以来的毫秒数,忽略闰秒(Unix Epoch;但考虑到大多数Unix时间戳函数以秒为单位计算)。
所以你只需要:
var date = new Date(1528204115692);
1528204115692
是您从C#代码中获得的值。
Javascript日期在内部以毫秒为单位(它只是一个数字),并在1970年1月1日“开始”(即“时间”0)。
所以:
public static readonly DateTime Date01Jan1970 = new DateTime(1970, 1, 1);
public static long MillisecondsFrom01Jan1970(DateTime dt)
{
return (dt.Ticks - Date01Jan1970.Ticks) / TimeSpan.TicksPerMillisecond;
}
使用它像:
long ms = MillisecondsFrom01Jan1970(DateTime.UtcNow);
这将返回DateTime.UtcNow
(Utc时间中的“now”)和1970年1月01日之间传递的ms数。
答案 1 :(得分:0)
以下代码对用户的不同时区的行为有所不同。浏览器。
var date = new Date(1528204115692);
您可以通过更改计算机时区以相同的数字(毫秒)对其进行测试。此代码在更改时区时显示不同的日期时间。