我有一个以UTC时区存储日期的数据库。我需要运行一个查询来获取所有记录,其日期介于今天的开始和今天的结束之间。由于数据以UTC格式存储,而且我在EST,因此我不能只做y-m-d 00:00:00到y-m-d 23:59:59因为EST比UTC低4小时。如何在PHP中使用正确的日期框架动态构建此查询?
我还需要为“上周”和“上个月”构建查询。
答案 0 :(得分:0)
mktime适合我
<?php
$time = mysql_query("select time from timedata where timeID = '1'");
$row_time = mysql_fetch_assoc($time);
$convertedTime = strtotime($row_time['time']);
$hours = 4;
$NewTime = mktime(date('H',$convertedTime)-$hours,date('i',$convertedTime),date('s',$convertedTime),date('n',$convertedTime),date('j',$convertedTime),date('Y',$convertedTime);
echo date('Y-m-d H:i:s',$NewTime);
?>
对于上周,您可以在7个关闭日期(&#39; j&#39;)和上个月取消1个关闭日期(&#39; n&#39;)
还要注意设置默认时区
date_default_timezone_set('Pacific/Auckland');
http://php.net/manual/en/function.date-default-timezone-set.php
答案 1 :(得分:0)
我能够像这样在美国东部时间获得全天的愤怒:
$date_today = DateTime::createFromFormat('Y-m-d H:i:s', date('Y') . '-' . date('m') . '-' . date('d') . ' 00:00:00')->add(new DateInterval('PT4H'))->format('Y-m-d H:00:00');
$start = $date_today;
$end = DateTime::createFromFormat('Y-m-d H:i:s', date('Y') . '-' . date('m') . '-' . date('d') . ' 00:00:00')->add(new DateInterval('PT27H'))->format('Y-m-d H:59:59');
我必须在时间00:00:00创建今天的日期然后再添加4小时(对于EST) 然后在结束日期我做了相同但增加了27小时59分59秒所以3小时59分钟,59秒+ 24小时(全天)