作为我移动到云端的本地应用程序的一部分,它显示来自json源的电视日程安排信息。核心数据使用距开始日期的偏移量(以秒为单位)来获取其开始时间,这很好,因为这些都是int格式。
问题出现在向云端迁移的过程中。
on premise应用程序位于英国,因此区域设置为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的配置值随着它们的移动而变化?
谢谢
发布于 2011-05-21 02:11:45
你不能更改Azure服务器的时区-假设UTC是当前设置的情况很多。
您应该能够通过字符串获取英国时区信息,例如:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");完成此操作后,您可以使用框架方法TimeZoneInfo.IsDaylightSavingTime http://msdn.microsoft.com/en-us/library/bb460642.aspx
tzi.IsDaylightSavingTime(DateTime.Now);发布于 2011-05-20 21:43:14
为什么不能简单地返回UTC并让客户端根据自己的语言环境进行翻译呢?
编辑:以下是代码
var offset = TimeZoneInfo.GetSystemTimeZones()
.Where(z => z.Id == "GMT Standard Time")
.Single()
.GetUtcOffset(DateTime.UtcNow)https://stackoverflow.com/questions/6072057
复制相似问题