【发布时间】:2011-12-10 16:35:18
【问题描述】:
我们正在开发一个必须处理 Unix 时间戳和 C# DateTime 对象的 C# Web 应用程序。必须将时间戳转换为 DateTime 对象。
以下示例显示了我的问题:DateTime 应该是 '18.10.2011 14:02:32'
System.DateTime time = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
time = time.AddSeconds(1318939352);
System.Console.Out.WriteLine("Time: " + time); // -> 18.10.2011 12:02:32
如果我在开发人员机器上调用 ToLocalTime(),则 DateTime 是正确的:
System.DateTime time = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
time = time.AddSeconds(1318939352).ToLocalTime();
System.Console.Out.WriteLine("Time: " + time); // -> 18.10.2011 14:02:32
但应用程序将在托管在另一个时区(GMT 标准时间)的服务器上运行,因此我必须处理不同的时区,而第二个示例在该服务器上失败。 无论我在哪里托管应用程序,在这种情况下,日期都应始终打印为 18.10.2011 14:02:32。
有人知道我该怎么做吗?提前致谢!
最好的问候, 托尔斯滕
【问题讨论】:
-
创建实例时为什么不指定
DateTimeKind.Utc,这样行吗?喜欢new System.DateTime(1970, 1, 1, 0, 0, 0, 0,DateTimeKind.Utc);(希望 14:02:32 是格林威治标准时间) -
始终以 UTC 格式存储时间,客户端应用程序有责任告诉服务器它希望如何格式化输出时间。
-
@V4Vendetta - 14:02:32 是 GMT + 2
-
您的 unix 时间戳已经是本地时间。这是你的问题。
-
@Xanatos:如果我的 unix 时间戳已经是本地时间,你会怎么做才能使 DateTime 正确?
标签: c# .net datetime timestamp