日期范围从日期开始到日期结束,在PHP EST到UTC

时间:2014-08-27 21:19:23

标签: php mysql datetime

我有一个以UTC时区存储日期的数据库。我需要运行一个查询来获取所有记录,其日期介于今天的开始和今天的结束之间。由于数据以UTC格式存储,而且我在EST,因此我不能只做y-m-d 00:00:00到y-m-d 23:59:59因为EST比UTC低4小时。如何在PHP中使用正确的日期框架动态构建此查询?

我还需要为“上周”和“上个月”构建查询。

2 个答案:

答案 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小时(全天)