繁体   English   中英

C#:Unix时间戳和DateTime

[英]C#: Unix timestamp and DateTime

我们正在开发一个必须处理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。

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

最好的问候,Thorsten

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM