我肯定犯了一个明显的错误,但我无法弄清楚。
我正在导入存储在 mysql 数据库中的日期(由 ExpressionEngine CMS 存储)。它是一个 unix 时间戳,即自 1970 年 1 月 1 日 00:00 以来的秒数。
所以我正在做这样的事情:
DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(orderdate /* int read from the database */);
不幸的是我没有得到正确的结果。这是一个例子:
从数据库读取的值:1258598728(这是订单日期)
Paypal 于太平洋标准时间 2009 年 11 月 18 日 12:45:20 发送了一封确定订单的电子邮件
在数据库中读取此值并知道如何正确显示此日期的 php 网站将其显示为 2009-11-18 03:45 PM (这似乎是正确的,因为我托管在东海岸的服务器上)
我上面的代码给出了11/19/2009 2:45:28 AM!! (UTC 给出的是东部时间 2009 年 11 月 18 日晚上 9:45,即与预期相差 6 小时)
如果使用 DateTimeOffset 来设置正确的时区,我会得到相同的结果。
知道我做错了什么吗?
最佳答案
试试这个:
DateTime epoch = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc);
DateTime myDate = epoch.AddSeconds(1258598728).toLocalTime();
关于.net - Unix 时间戳到 .net DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1766208/