Основное решение для аналитики часовых поясов
Я создаю базовую аналитику для своего сайта. У зарегистрированного пользователя есть своя страница. Я предоставляю им некоторую базовую аналитику для просмотров страниц: количество просмотров, реферер, браузер, ОС и страну. Пользователь может фильтровать по часам, дням, неделям, месяцам и всем. Я объединяю все просмотры за день, а затем за месяц. У меня проблема в том, что данные хранятся в часовом поясе UTC, и это нормально, пока я не начну собирать данные. Например. День UTC отличается от дня EST, что означает, что аналитика неверна для пользователя вне часового пояса UTC при фильтрации по неделям, месяцам и всем.
Причина, по которой я объединяю представления, заключается в том, что таблица представлений не становится слишком большой. Все представления за день сжимаются в одну строку для конкретной страницы, а затем снова сжимаются в одну строку за месяц.
Как я могу решить эту проблему?
1 ответ
Почему бы не использовать DateTimeOffset?
DateTimeOffset учитывает мгновенное время.
https://docs.microsoft.com/en-us/dotnet/standard/datetime/choosing-between-datetime
DateTime против DateTimeOffset
Структура DateTimeOffset представляет значение даты и времени вместе со смещением, которое указывает, насколько это значение отличается от UTC. Таким образом, значение всегда однозначно идентифицирует один момент времени.
Тип DateTimeOffset включает в себя все функциональные возможности типа DateTime, а также информацию о часовом поясе. Это делает его подходящим для приложений, которые делают следующее:
Однозначно и однозначно идентифицировать один момент времени. Тип DateTimeOffset может использоваться для однозначного определения значения "сейчас", для регистрации времени транзакций, для регистрации времени системных или прикладных событий, а также для записи времени создания и изменения файла.
Выполните общую дату и время арифметики.
Сохраните несколько связанных времен до тех пор, пока эти времена хранятся как два отдельных значения или как два члена структуры.