Как фильтровать данные на месяц с учётом часовых поясов пользователей?
Я использую базу MongoDB
Допустим вносится запись с датой и временем в UTC в ночное время суток. В UTC запись может уйти в другой день.
Мне нужно далее фильтровать например записи по месяцам. Есть риск, что некоторые данные утеряются из-за того что указаны разные часовые пояса. Как в таких случаях поступать? Как допустим пользователю отфильтровать записи в его часовом поясе?
Записываешь часовой пояс как +03 или -07, и при фильтре добавляешь или убавляешь значение часового пояса к значению utc.
т.е. в бд значение 14:00, при фильтре все записи старше либо равны 14:00 по времени пользователя
для utc time >= 14:00
для +03 time >= 17:00
для -07 time >= 07:00
John Doe, хз, не помню уже как монго с датами работает. Вроде
const userTZ = getUserTZ() || '+0300'
let query = {
"createdAt": {
$lte: new Date(`2019-06-01 00:00:00${userTZ}`),
$gte: new Date(``2019-06-30 23:59:59${userTZ}``)
}
}
По идее вызов new Date должен распарсить строку времени, превратить в utc, а затем вернуть представление в соотвествии с тем часовым поясом что на сервере, в нем же монга должна хранить даты. Если же как это часто бывает тупо unix time, то просто +new Date(`2019-06-01 00:00:00${userTZ}`) это переведет date в int с unix time