Asp.net mvc 基于用户时区将Unix时间戳转换为日期时间
我想将我的ASP.NET Web应用程序的UNIX时间戳转换为DateTime。 关于这个问题有很多答案。但到目前为止,我还不知道如何根据用户的位置将时间戳转换为日期时间。 该应用程序是一个日历,用于欧洲、美国和印度 是否有方法检测用户当前所在的时区并相应地转换时间戳?我还需要考虑夏令时 这是我目前的代码:Asp.net mvc 基于用户时区将Unix时间戳转换为日期时间,asp.net-mvc,calendar,unix-timestamp,Asp.net Mvc,Calendar,Unix Timestamp,我想将我的ASP.NET Web应用程序的UNIX时间戳转换为DateTime。 关于这个问题有很多答案。但到目前为止,我还不知道如何根据用户的位置将时间戳转换为日期时间。 该应用程序是一个日历,用于欧洲、美国和印度 是否有方法检测用户当前所在的时区并相应地转换时间戳?我还需要考虑夏令时 这是我目前的代码: public DateTime ConvertFromUnixTimestamp(double timestamp) { TimeZone localZone = T
public DateTime ConvertFromUnixTimestamp(double timestamp)
{
TimeZone localZone = TimeZone.CurrentTimeZone;
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DaylightTime daylight = localZone.GetDaylightChanges(origin.AddSeconds(timestamp).Year);
return origin.AddSeconds(timestamp).Add(daylight.Delta);
}
但这对欧洲以外的用户不起作用
有什么建议吗?你的代码的主要问题是你从来没有真正使用过时区。在计算是否为夏令时时时,会考虑到这一点,但不会实际修改返回的日期时间。但是,这里的代码过于复杂。如果您只想将其转换为本地服务器时间,则只需:
new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(timestamp).ToLocalTime();
DateTime的默认类型是UTC,这是本例中所需的,因为UNIX时间戳是从UTC测量的
编辑
从技术上讲,因为DateTime将默认时间部分为00:00:00.0000。您也可以执行DateTime1970、1、1。哦,这就是盲目复制粘贴代码的结果。。。我会做一个简短的测试,一旦我收到印度的反馈,我就会接受你的答案。所以我终于改变了主意,检查了在印度显示的时间。它显示的是《欧洲时报》,而不是《当地时报》。。。