Asp.net mvc ToLocalTime显示错误的时间

Asp.net mvc ToLocalTime显示错误的时间,asp.net-mvc,azure-web-app-service,Asp.net Mvc,Azure Web App Service,我在本地PC上的IIS中运行一个网站,我将日期保存为UTC,并在前端mvc网站上调用.ToLocalTime()。如果我在本地电脑上运行网站,它会输出正确的日期和时间,并根据DST进行调整。如果我在英国西部的Azure区域运行它,我会落后1个小时。直到今天,这才成为一个问题,即时钟在周六改变。我需要向Azure提交票据吗?还是我做错了?时区取决于服务器的位置 我也面临同样的问题。我的服务器在新加坡,它曾经和我所在的地区印度发生冲突 它也会影响时间和日期格式。 因此,最好不要在服务器端使用ToLo

我在本地PC上的IIS中运行一个网站,我将日期保存为UTC,并在前端mvc网站上调用.ToLocalTime()。如果我在本地电脑上运行网站,它会输出正确的日期和时间,并根据DST进行调整。如果我在英国西部的Azure区域运行它,我会落后1个小时。直到今天,这才成为一个问题,即时钟在周六改变。我需要向Azure提交票据吗?还是我做错了?

时区取决于服务器的位置

我也面临同样的问题。我的服务器在新加坡,它曾经和我所在的地区印度发生冲突

它也会影响时间和日期格式。

因此,
最好不要在服务器端使用
ToLocalTime()
。只需
从服务器获取UTC时间
在客户端转换为
本地时间即可。问题解决了


希望这有帮助。谢谢。

Azure应用服务器正在使用UTC时间。如果你的网站不是针对英国的全球性网站。我们可以使用以下代码获取英国当地时间

DateTime utcNow = DateTime.UtcNow;
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"); //UK time zone
DateTimeOffset  time = TimeZoneInfo.ConvertTimeFromUtc(utcNow, tz);
lab_time.Text = time.DateTime.ToString(CultureInfo.InvariantCulture); //display the datetime with label.

如果您的网站是全球性的,您可能需要使用javascrpt来实现这一点,更多详细信息请参考另一个

好的,但是我的服务器在英国,所以应该没有问题?但是当时间改变时,我不知道他们在Azure做什么。而且,如果你的网站是全球性的,这将是一个问题!事实上我不确定这是真的。我的UK Azure实例在utc中运行,我的qa和生产服务器(均在英国)在GMT中运行,因此服务器位置不是问题所在,站点仅在英国,我是否可以为整个应用程序全局设置它?正如我提到的,我们需要使用javascript来实现这一点。根据我的经验,我们无法从服务器后端获取全局本地时区。如果有帮助,请将其标记为有助于更多社区的答案。