我正在迁移到云端的内部应用程序的一部分,显示来自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的配置值在移动时会发生变化吗?
由于
答案 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)