PHP, скорректировать время получения - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть cronjob, который каждый час вызывает файл PHP через CURL с одного из моих компьютеров.Когда файл вызывается, код PHP извлекает время сервера, поскольку он должен записать его в поле базы данных в формате ЧЧ: ММ.

Клиент и сервер не синхронизированы идеально, поэтому, когда клиент вызывает файл PHP, может случиться так, что для клиента это 14 часов, а для сервера - 13:59.13:59 не подходит для моей базы данных, так как у меня всегда должно быть 14:00, 15:00, 16:00 и т. Д.

Я не могу отправить параметры через CURL из-за нерешенная проблема со временем и моим компьютером И я не могу изменить время сервера.

Единственное, что я мог попробовать, это настроить время, полученное из PHP, и, когда оно 13:59 (или даже 14:01), отрегулировать и сохранить его как 14:00.Есть ли PHP magics для решения этой проблемы?Моя идея состоит в том, чтобы преобразовать время в 13,59 (или 14,01), а затем каким-то образом округлить их, но, возможно, есть лучшие варианты.

Любая помощь приветствуется.

Ответы [ 3 ]

3 голосов
/ 10 декабря 2011

Самый простой способ получить ближайший час в строке формата HH:MM, о которой я могу подумать:

ИСПРАВЛЕНО (снова)

$nearest_hour = str_pad(round(date('H') + ((date('i') - 1) / 60)),2,'0',STR_PAD_LEFT).':00';
1 голос
/ 10 декабря 2011

Скажем, у вас есть строка времени в $time в формате HH:MM и отметка времени в $timestamp. Вы делаете:

$t_str = explode(':', $time);
$hour = (int)t_str[0];
$min = (int)t_str[1];
if($min >= 30)
 $hour++;

if($hour == 24)
 $hour = 0;

$time = "{$hour}:00";

И ваше время будет установлено соответствующим образом.

1 голос
/ 10 декабря 2011
$time = '13:59';
list($h, $m) = explode(':', $time);
$h += $m > 30;

echo $h . ':00';

как насчет такого пустышки?; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...