繁体   English   中英

PHP Web应用程序中的DateTime(时区)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM