Рассмотрим два варианта:
- Преобразуйте все даты в часовой пояс вашего клиента, затем сравните свойство
Date
каждого результата с 2020-03-13 - Преобразовать начало 2020-03-13 и начало 2020-03-14 с часового пояса вашего клиента в UT C, а затем фильтрация на основе этого диапазона (с включающим началом и исключительным концом )
Последний потенциально более эффективен, использует только два преобразования - но он использует более сложный способ преобразования «локально в UT C» (где вам нужно беспокоиться о том, «что» случается, если полночь указанной даты не существует или происходит дважды из-за преобразований летнего времени) ... тогда как преобразование "конвертировать UT C в местное время" всегда однозначно.
Я бы, наверное, go для первого варианта, если эффективность не является существенной проблемой.
С точки зрения эффективности, обратите внимание, что если база данных хранит UT C, вы можете выполнить преобразования для второго варианта локально, а затем ge т база данных, чтобы сделать всю фильтрацию там. Я не знаю, насколько просто заставить базу данных фильтровать, включая преобразование из UT C в целевой часовой пояс. Если это сложно, вы можете, по крайней мере, выполнить некоторую фильтрацию в базе данных, предполагая, что смещение UT C пользователя никогда не будет превышать +/- 14 часов - так что вы можете получить все записи с помощью UT C значение в этом «максимально возможном окне» и затем sh локальная фильтрация путем преобразования каждого значения в код.