应用程序的问题依赖于Azure中的英国夏令时

时间:2011-05-20 12:44:14

标签: azure timezone dst

我正在迁移到云端的内部应用程序的一部分,显示来自json源的TV Scheduling信息。核心数据使用从开始日期开始的秒数来获得它的开始时间,因为这些都是int UTC格式。

问题出现在移动到云端。

本地应用程序位于英国,因此该区域设置为UntedKingdom,并且使用

正确输出电视时间
return programmeStart.AddHours(programmeStart.IsDaylightSavingTime() ? 1 : 0);

但是,现在已经迁移到云,IsDaylightSavingTime的功能由于数据中心不可用而不再返回true。

绞尽脑汁试图对此进行排序。

是否有一种快速简便的方法来设置托管服务在Azure中运行的区域设置,或者是创建扩展方法的最佳解决方案,该方法读取BST运行时的边界,然后返回true或false从那里例如

public static class DateTimeExtension
{
  public static bool IsMyDaylightSavingTime(this DateTime timeToTest)
  {
    if(timeToTest >= GetConfig("bstStart") && timeToTest <= GetConfig("bstFinish"))
    {
      return true;
    }

    return false;
  }
}

维持bst的配置值在移动时会发生变化吗?

由于

2 个答案:

答案 0 :(得分:4)

您无法更改Azure服务器的时区 - 有很多事情假设UTC是当前设置。

您应该能够通过字符串获取英国时区信息,例如:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");

完成后,您可以使用框架方法TimeZoneInfo.IsDaylightSavingTime http://msdn.microsoft.com/en-us/library/bb460642.aspx

tzi.IsDaylightSavingTime(DateTime.Now);

答案 1 :(得分:1)

为什么你不能简单地返回UTC并让客户端根据他们的语言环境进行翻译?

编辑:这是代码

var offset = TimeZoneInfo.GetSystemTimeZones()
.Where(z => z.Id == "GMT Standard Time")
.Single()
.GetUtcOffset(DateTime.UtcNow)