Я узнал, что должен хранить 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
?Или все будет в порядке, так как при этом будет установлен часовой пояс для запроса?