PHP Web应用程序中的日期时间(时区)

PHP Web应用程序中的日期时间(时区),php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我学会了存储UTC并在当地时间显示。如何根据用户时间查询SQL数据库中今天到期的行。我有一个Todo表,其中有一列dueOn它包含int中的UTC Unix时间戳 我想它看起来会像 SELECT * FROM Todos WHERE dueOn BETWEEN {today's timestamp} AND {tomorrow's timestamp} 我将使用什么来获取今天和明天的时间戳?我认为这听起来很简单,但我对所有类似的日期和时间的方法感到非常困惑 更新 我想知道下面这种说法是否正确

我学会了存储UTC并在当地时间显示。如何根据用户时间查询SQL数据库中今天到期的行。我有一个Todo表,其中有一列
dueOn
它包含
int
中的UTC Unix时间戳

我想它看起来会像

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;

我是否可以不使用
日期\u默认值\u时区\u设置
,以某种方式获取用户的时间?或者,这样可以设置请求的时区吗?

在SQL查询中,使用CONVERT_TZ将到期日期从用户的时间转换为UTC

例:


在SQL查询中,使用CONVERT_TZ将到期日期从用户的时间转换为UTC

例:


假设我想根据用户的时区获取当前时间戳,我将如何做,而不是硬编码的值?如果可能的话,在PHP和MySQL中,我将使用Doctrine,因此我不会直接使用MySQL,但我想学习SQL中的TOO,如果用户的时区是EST,
CONVERT_z(NOW(),'EST',UTC')
。在PHP中,
date\u default\u timezone\u set('EST')
然后使用
date()
或任何其他datetime函数。假设我想根据用户的时区获取当前时间戳,我将如何做,而不是硬编码的值?如果可能的话,在PHP和MySQL中,我将使用Doctrine,因此我不会直接使用MySQL,但我想学习SQL中的TOO,如果用户的时区是EST,
CONVERT_z(NOW(),'EST',UTC')
。在PHP中,
date\u default\u timezone\u set('EST')
然后使用
date()
或任何其他日期时间函数。
SELECT * FROM Todos
WHERE CONVERT_TZ('2011-01-21', 'EST', 'UTC') BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY)