.net - Unix 时间戳到 .net DateTime

标签 .net datetime timestamp expressionengine

我肯定犯了一个明显的错误,但我无法弄清楚。

我正在导入存储在 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/

相关文章:

c# - 您应该在哪里对验证进行单元测试?

.net - HTMLAgilityPack .load 连接在某些站点上关闭

python - “模块”对象没有属性 '_strptime',有多个线程 Python

datetime - 将 DATETIME 转换为人类可读的日期

sql - 如何从 DATETIME 列获取日期?

mysql - SQL表将日期列转换为纪元

Java、Oracle db - trunc(nvl) 从日期时间对象中删除时间戳后出现时区问题

.net - 如何显示带有所选日期部分的 DateTime,但按 FormatProvider 的顺序显示?

.net - .NET 是 "all COM underneath"吗?

mysql - 如何检查 MySQL 中的时间戳是否出现在本月初之后?