我们有一个可以对世界各地的物理位置进行建模并跟踪这些位置的活动的系统。
我们将所有活动日期存储在数据库的UTC中。
在用户界面中显示日期时,我们可以简单地使用
进行转换TimeZoneInfo.ConvertTimeFromUtc(date, TimeZoneInfo.FindSystemTimeZoneById(timeZone));
但是,我们现在开始获得一些报告需求。例如
昨天该位置发生了多少动作
上周那个位置发生了多少动作
如果昨天表示昨天UTC,则在SQL甚至实体框架中都非常容易做到。但是,例如,昨天的实际情况意味着昨天的太平洋标准时间比世界标准时间晚8小时。
因此,当前我们使用实体框架加载所有操作及其日期,转换其日期,然后计算报告。
这不是很有效,一旦我们的数据增长,可能会变得难以管理。
必须有更好的方法!