[英]DateTime (Timezones) in PHP Web Applications
我了解到我应该在当地时间存储UTC和Show。 如何根据用户时间在SQL数据库中查询当前到期的行。 我有一个带有列的Todo表, dueOn
它包含int
中的UTC Unix时间戳。
我认为它看起来像
SELECT * FROM Todos
WHERE dueOn BETWEEN {today's timestamp} AND {tomorrow's timestamp}
我将用什么来获得今天和明天的时间戳? 我觉得这听起来很简单,但我对日期和时间的所有类似方法都非常困惑
UPDATE
我想知道下面的内容是正确的
// 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
的情况下以某种方式获取用户的时间吗? 或者它会好吗,因为这只会设置请求的时区?
在SQL查询中,使用CONVERT_TZ将截止日期从用户的时间转换为UTC。
例如:
SELECT * FROM Todos
WHERE CONVERT_TZ('2011-01-21', 'EST', 'UTC') BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.