所以我一直试图在过去的4个小时内找出这个问题。 Windows Azure上的DateTime.Now是1/10/2013 Vs当地时间是1/09/2013。我已经尝试了书中的所有内容,让它调整DateTime.Now.ToLocalTime(),做UTC但我仍然无法解决问题。
答案 0 :(得分:2)
private DateTime ConvertToCentral()
{
DateTime timeUtc = DateTime.UtcNow;
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
return cstTime;
}
答案 1 :(得分:1)
答案与Gaurav发布的相同 - Azure服务器以UTC(格林威治标准时间)运行,而不是您当地时间。例如,亚利桑那州是UTC - 7小时,因此我们将当地时间增加7小时以获得UTC。 Azure门户和浏览器可能会调整一些时间到当地时间,但在代码中使用DateTime.Now时,您需要使用DateTime.Now.UTC - 如果要调整Azure中运行的应用程序的用户显示,则添加TimeZoneOffset的ServiceConfiguration设置(即-7)并显示DateTime.Now.AddHours(TimeZoneOffset)。
答案 2 :(得分:0)
目前,Windows Azure虚拟机使用UTC,即使它们不使用,也不要指望它们使用与您相同的时区。
在分布式应用程序中,如果您尽可能频繁地使用UTC,则会省去很多麻烦,如果您不能使用UTC,您可以将UTC与本地时间或当地时间一起使用,但每次都使用UTC使用当地时间你应该知道你所在的时区。
如果忽略这些注意事项,您也可以find yourself in year 2555 (not a joke - that's for real)。
答案 3 :(得分:0)
Windows Azure计算机适合您使用,因此如果您需要不同的时区,请立即进行设置。
最简单的方法是创建一个非常简单的启动任务,并使用Windows时区实用程序 tzutil 。我们使用以下内容:
tzutil /s "GMT Standard Time"
默认情况下,此选项仅安装在Windows Server 2008 R2或Windows Server 2012映像上。
详细信息如下:http://wely-lau.net/2011/06/26/setting-timezone-in-windows-azure-3/