У нас есть система, которая моделирует физические местоположения по всему миру и отслеживает активность в этих местоположениях.
Мы храним все даты нашей активности в UTC в базе данных.
При отображении даты в пользовательском интерфейсе мы можем просто конвертировать, используя
TimeZoneInfo.ConvertTimeFromUtc(date, TimeZoneInfo.FindSystemTimeZoneById(timeZone));
Однако сейчас у нас появляются некоторые потребности в отчетности.Например,
Сколько действий произошло в этом месте вчера
Сколько действий произошло в этом месте на прошлой неделе
Это очень легко сделать вSQL или даже Entity Framework, если вчера означает вчера UTC.Однако вчерашние фактические значения означают вчерашний PST, например, который на 8 часов отстает от UTC.
Поэтому в настоящее время мы загружаем все действия и их даты, используя Entity Framework, конвертируем их даты и затем вычисляем отчеты.
Это не очень эффективно и, вероятно, станет неуправляемым, когда наши данные будут расти.
Должен быть лучший путь!