将DateTime转换为本地不起作用

时间:2013-03-25 09:52:25

标签: c# datetime timezone globalization utc

在MVC4 C#应用程序中,我尝试将服务器时间转换为本地时间。它在本地工作,但在部署时不起作用。为了测试,我检查了部署站点中的一些代码结果。他们是:

25.03.2013 04:39:31 - DateTime.Now 
25.03.2013 09:39:31 - DateTime.UtcNow
25.03.2013 04:39:31 - DateTime.UtcNow.ToLocalTime()
25.03.2013 09:39:31 - SpecifyKind(DateTime.UtcNow, DateTimeKind.Local)
25.03.2013 04:39:31 - TimeZoneInfo.ConvertTimeFromUtc(DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Utc), TimeZoneInfo.Local)
25.03.2013 04:39:31 - TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, TimeZoneInfo.Local.Id)
25.03.2013 04:39:31 - TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.Local) 
25.03.2013 04:39:31 - TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local)
25.03.2013 09:39:31 - TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Utc)
Utc - DateTime.UtcNow.Kind

同时在我的电脑上时间是:

25.03.2013 13:39:31;

我认为这取决于全球化。在配置文件中,我分别尝试了以下变体:

    <globalization  uiCulture="en-US"/>,

    <globalization culture="az" uiCulture="az" />,

    <globalization culture="auto" uiCulture="auto" />,

    <globalization culture="az-Latn-AZ" uiCulture="az-Latn-AZ" />,

    <globalization culture="en-US" uiCulture="en-US"/>

但是,没有任何改变。我当地的时区是(UTC + 04:00)Baku ,我在所有代码中都使用了DateTime.UtcNow。任何人都可以帮我转换服务器时间并显示当地时间吗?

1 个答案:

答案 0 :(得分:2)

问题是您的网站正在使用服务器所在的时间和时区。您的问题的解决方案是您在本地计算机上将本地时间更改服务器的日期时间(如果您有权这样做)。

如果您希望使用代码的解决方案,您必须使用时区将UTC时间转换为您的特定时区时间。此链接可以帮助您:http://msdn.microsoft.com/en-us/library/bb397769.aspx