C#:Unix时间戳和日期时间
我们正在开发一个C#web应用程序,它必须处理Unix时间戳和C#DateTime对象。时间戳必须转换为DateTime对象 以下示例显示了我的问题:日期时间应为“18.10.2011 14:02:32”C#:Unix时间戳和日期时间,c#,.net,datetime,timestamp,C#,.net,Datetime,Timestamp,我们正在开发一个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: " + tim
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你可以看看
你可以看看
为什么不在创建实例时指定
DateTimeKind.Utc
,这样行吗?比如newsystem.DateTime(1970,1,1,0,0,0,0,DateTimeKind.Utc)代码>(希望14:02:32是GMT)始终以UTC格式存储时间,客户端应用程序负责告诉服务器它希望输出的时间格式。@V4Vendetta-14:02:32是GMT+2您的unix时间戳已经是本地时间。这是您的问题。@Xanatos:如果我的unix时间戳已经在本地时间,您会怎么做才能使日期时间正确?为什么不在创建实例时指定DateTimeKind.Utc
?比如newsystem.DateTime(1970,1,1,0,0,0,0,DateTimeKind.Utc)代码>(希望14:02:32是GMT)始终以UTC格式存储时间,客户端应用程序负责告诉服务器它希望输出的时间格式。@V4Vendetta-14:02:32是GMT+2您的unix时间戳已经是本地时间。这是您的问题。@Xanatos:如果我的unix时间戳已经在本地时间,您会怎么做才能使日期时间正确?
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); }
}
}