2014-08-27 3 views
0

У меня есть база данных, которая хранит даты в часовом поясе UTC. Мне нужно запустить запрос, чтобы получить все записи с датами между началом дня и днем ​​сегодняшнего дня. Поскольку данные хранятся в UTC, и я в EST, я не могу просто сделать y-m-d 00:00:00 до y-m-d 23:59:59, потому что EST на 4 часа меньше UTC. Как я могу построить этот запрос в PHP с правильным фреймом даты динамически?Дата диапазон от даты начало до конца дня в PHP EST до UTC

Мне также нужно построить запрос для «на прошлой неделе» и «в прошлом месяце».

ответ

0

указываете ей работает для меня в большинстве случаев

<?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 от даты («J»), а в прошлом месяце взять 1 от даты («п»)

Также быть в курсе, чтобы установить часовой пояс по умолчанию

date_default_timezone_set('Pacific/Auckland'); 

http://php.net/manual/en/function.date-default-timezone-set.php

+0

Это помогло в течение недельного диапазона – ecorvo

0

Я был в состоянии получить полный рабочий день бушует в EST, как это:

$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 ч (полный день)

Смежные вопросы