关于c#:将DateTime转换为EPOCH时间将返回一个新的Date

Converting DateTime to EPOCH time is returning a new Date

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

1
2
3
4
5
6
7
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的函数,输出日期变为,

GMT: Sunday, July 15, 2018 11:09:42 PM
Your time zone: Monday, July 16, 2018 9:09:42 AM GMT+10:00

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


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

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