首页 > 解决方案 > C# UTC 时间为毫秒

问题描述

在 C# 中,我想以毫秒为单位获取 UTC (+00:00) 时间。所以我可以在带有偏移量的 Javascript 中使用它(如下所示)。我已经尝试了几件事,但我没有做到这一点。

new Date(1528204115692 - (new Date().getTimezoneOffset() * 60000)).toString()

下面的代码根据我的时区给了我毫秒。

((DateTimeOffset)DateTime.UtcNow).ToUnixTimeMilliseconds()

我想在数据库中保留 UTC 时间毫秒,以便我可以根据用户浏览器区域显示日期时间。

例如:在 +03:00 区域现在时间是 06.05.2018 16:12:20.568

我想以毫秒为单位保持 UTC 时区时间。(纪元时间 00:00)

你能帮我吗?

谢谢

标签: javascriptc#datetime

解决方案


您的 C# 代码是正确的。

Mozilla

新日期(值);

价值

整数值,表示自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数,忽略闰秒(Unix 纪元;但请考虑大多数 Unix 时间戳函数以秒计)。

所以你只需要:

var date = new Date(1528204115692);

1528204115692您从 C# 代码中获得的值在哪里。

Javascript 日期在内部以毫秒为单位(它只是一个数字),“开始”于 1970 年 1 月 1 日 00.00(即“时间”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 时间的“现在”)和 1970 年 1 月 1 日之间经过的毫秒数。


推荐阅读