Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 基于用户时区将Unix时间戳转换为日期时间_Asp.net Mvc_Calendar_Unix Timestamp - Fatal编程技术网

Asp.net mvc 基于用户时区将Unix时间戳转换为日期时间

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

我想将我的ASP.NET Web应用程序的UNIX时间戳转换为DateTime。 关于这个问题有很多答案。但到目前为止,我还不知道如何根据用户的位置将时间戳转换为日期时间。 该应用程序是一个日历,用于欧洲、美国和印度

是否有方法检测用户当前所在的时区并相应地转换时间戳?我还需要考虑夏令时

这是我目前的代码:

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。哦,这就是盲目复制粘贴代码的结果。。。我会做一个简短的测试,一旦我收到印度的反馈,我就会接受你的答案。所以我终于改变了主意,检查了在印度显示的时间。它显示的是《欧洲时报》,而不是《当地时报》。。。