2013-03-25 90 views
0

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

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 

在我的电脑上的时间,同时为:

2013年3月25日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)巴库和我在所有代码中使用了DateTime.UtcNow。任何人都可以帮助我转换服务器时间并显示当地时间吗?

回答

2

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

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

+0

我找到了解决方案,但是,当我输入时,它可以工作,在这种情况下,日期选择器不工作... – 2013-03-26 05:56:20

+0

您使用的日期选择器? jQuery的UI日期选择器或其他东西 – Devesh 2013-03-26 06:39:38

+0

是的jQuery的日期选择器。我找不到真正的理由。因为有时候,日期工作,日期选择器不工作,并且时间反过来。在peresent datepicker工作,但ToLocalTime()方法不能正常工作。我使用 2013-03-26 09:27:25