C#UTC时间为毫秒

时间:2018-06-05 13:13:46

标签: javascript c# datetime

在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)

你能帮忙吗?

谢谢

2 个答案:

答案 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);

您可以通过更改计算机时区以相同的数字(毫秒)对其进行测试。此代码在更改时区时显示不同的日期时间。