【发布时间】:2016-11-03 15:12:18
【问题描述】:
我正在开发一种接收 UNIX 时间戳和文化的方法:
public DateTime unixEpochToDateTime(long unixTimeStamp, string culture) {
...
}
调用示例:
DateTime t = unixEpochToDateTime(1478181983, "es-ES");
我需要在多种文化之间转换此 UTC 时间,而不使用 TimeZone.CurrentTimeZone,因为此方法将在服务器中运行,并且服务器文化始终相同。
例如,如果两个用户在 EE.UU 和英国请求我的方法,我得到相同的 UTC?
我很困惑。
【问题讨论】:
-
正如我对你的问题一样(目前)。你有一个 unix 时间戳,我可以假设时间戳也来自 UTC,还是这个时间戳存储了一个偏移量?
-
@Igor 时间戳为 UTC。谢谢!
-
那为什么不在 UTC 创建
DateTime实例呢?此外,日期时间有一个Kind 的属性,您可以设置它允许您指定UTC(构造函数中还有一个重载,您也可以在其中设置它)。见静态方法DateTime.SpecifyKind。 -
我正在尝试这个:
DateTime datetime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); datetime = datetime.AddSeconds(unixTimeStamp)但总是返回与我的文化不同的时间(少一小时) -
不确定您的本地偏移量是多少,但要获取您的本地时间,您可以使用msdn.microsoft.com/en-us/library/…。
var mylocal = datetime.ToLocalTime();
标签: c# cultureinfo