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。

有人知道我该怎么做吗?提前感谢!

最诚挚的问候,托尔斯滕

Unix时间戳和日期时间

您可以查看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); }
    }        
}