Я узнал, что я должен хранить UTC и показывать по местному времени. Как я могу запросить в базе данных SQL строки, которые должны быть выполнены сегодня, в соответствии со временем пользователя. У меня есть таблица Todo со столбцом dueOn
, который содержит временную метку UTC Unix в int
.
Я думаю, это будет выглядеть примерно так
SELECT * FROM Todos
WHERE dueOn BETWEEN {today's timestamp} AND {tomorrow's timestamp}
Что я буду использовать, чтобы получить отметку времени сегодня и завтра? Я думаю, это звучит просто, но я очень запутался со всеми подобными методами для даты и времени.
ОБНОВЛЕНИЕ
Мне интересно, что-то вроде ниже правильно
// set default timezone to the user's timezone
date_default_timezone_set("Asia/Singapore");
// get UTC datetime for today & tomorrow
$today = DateTime::createFromFormat('Y-m-d', date('Y-m-d'), new DateTimeZone('UTC'));
$tomorrow = clone($today);
$tomorrow->add(DateInterval::createFromDateString('1 day'));
$sql = 'SELECT * FROM Todos WHERE dueOn BETWEEN ' . $today->getTimestamp() . ' AND ' . $tomorrow->getTimestamp();
echo $sql;
Можно ли как-то получить время пользователя без использования date_default_timezone_set
? Или все будет в порядке, поскольку это просто установит часовой пояс для запроса?