旧版应用程序中的Azure DateTime

时间:2014-01-07 21:17:47

标签: c# datetime utc

我正在将应用程序移植到Azure中的ASP.NET MVC。该应用程序没有考虑时区或夏令时,它基本上假设该应用程序将只在德克萨斯州内部使用。因此,我有大量数据假设DateTime处于中央标准时间,并且代码中充斥着DateTime.Now和GETDATE()。

因此,在迁移到Azure时,我发现所有内容都使用UTC,并且无法设置云服务或SQL数据库的时区。这是不幸的,因为我已经继承了数千行代码,而且由于政府/法律原因,我真的受到限制。

处理此问题的最佳方法是什么?到目前为止,这是我的想法:

  • 当我向用户显示数据时,我可以使用DateTime.ToString(),因为它已经在CST中。
  • 当我从用户那里获取数据时,我可以在他们输入数据时将其解析为DateTime,因为他们认为是CST。
  • 将事物与DateTime.Now进行比较时,我需要知道我正在处理UTC DateTimes。最好的方法是什么?我正在考虑添加我自己的名为LocalizedDateTime的属性,它使用TimeZone.ToLocalTime将DateTime.UtcNow转换为我的时区,并将db值与之比较。这是最好的解决方法,还是这个坏主意?
  • 查询时,我需要找到GETDATE()的替代品,我可以指定时间zome。什么是最好的方法?

请注意,我一直在谈论CST,但实际上我们正在将其转移到云端,因为我们希望开始定位州外的区域。因此,我需要在可以指定时区的地方进行抽象。

我意识到这是一个抽象的问题,我为此道歉,但我现在真的很沮丧,因为这出乎意料地在我们身上出现了。任何帮助/想法?

0 个答案:

没有答案