将 DateTime 转换为 EPOCH 时间正在返回一个新的 Date

Posted

技术标签:

【中文标题】将 DateTime 转换为 EPOCH 时间正在返回一个新的 Date【英文标题】:Converting DateTime to EPOCH time is returning a new Date 【发布时间】:2018-12-24 19:11:18 【问题描述】:

要将日期时间转换为 EPOCH 时间,我使用以下函数:

public static long EpochTime(DateTime dt)
        
            //long form code to be clear
            TimeSpan t = dt.ToLocalTime() - new DateTime(1970, 1, 1);
            long millisecondsSinceEpoch = (long)t.TotalSeconds * 1000;
            return millisecondsSinceEpoch;
        

现在如果我测试输入日期为15/07/2018 1:09:42 PM的函数,输出日期变为,

格林威治标准时间:2018 年 7 月 15 日星期日晚上 11:09:42 您的时区:2018 年 7 月 16 日星期一 9:09:42 AM GMT+10:00

我需要纪元时间,因为 Highchart 需要 x 轴上的纪元时间。

【问题讨论】:

如果有帮助,您可以在 highcharts 中设置时区:api.highcharts.com/highcharts/time 为什么投反对票?? 你为什么打电话给ToLocalTime?在几乎所有情况下,这都与您想要的相反。 试试 DateTimeOffset.Now.ToUnixTimeSeconds() @DaisyShipton,@Marco Salerno,@ewolden 谢谢 【参考方案1】:

您需要确保比较正确时区的时间。我建议将两者都转换为 UTC:

TimeSpan t = dt.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

【讨论】:

以上是关于将 DateTime 转换为 EPOCH 时间正在返回一个新的 Date的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 将 UTC Unicode 更改为 Epoch

自Epoch以来如何将Pandas Timestamp转换为nano?

如何将 13 位 unix 纪元时间格式转换为日期时间?

从纪元到日期时间的转换不正确

将 Epoch 时间戳转换为 sql server(人类可读格式)

如何将时间戳从十六进制格式转换为 EPOCH 时间戳?