Unix时间戳和日期时间
本文关键字:时间 日期 时间戳 Unix | 更新日期: 2023-09-27 18:11:44
我们正在开发一个c# web应用程序,它必须处理Unix时间戳和c# 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。
有人知道我该怎么做吗?提前感谢!
最诚挚的问候,托尔斯滕
您可以查看TimeZoneInfo
public struct DateTimeWithZone
{
private readonly DateTime utcDateTime;
private readonly TimeZoneInfo timeZone;
public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone)
{
utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZone);
this.timeZone = timeZone;
}
public DateTime UniversalTime
{
get { return utcDateTime; }
}
public TimeZoneInfo TimeZone
{
get { return timeZone; }
}
public DateTime LocalTime
{
get { return TimeZoneInfo.ConvertTime(utcDateTime, timeZone); }
}
}