我有一个cronjob,每小时从我的一台计算机通过CURL调用一个PHP文件。调用文件时,PHP代码会检索服务器时间,因为它应该以HH:MM格式将其记录在数据库字段中。
客户端和服务器没有完全同步,因此,当客户端调用PHP文件时,对于客户端来说它可能发生在14点,而对于服务器它仍然是13:59。我的数据库不接受13:59,因为我应该总是在14:00,15:00,16:00等等。
由于unsolved issue with time and my computer我无法通过CURL发送参数,我无法更改服务器时间。
我唯一可以尝试的是调整从PHP检索的时间,当它是13:59(甚至14:01)时,调整并保存为14:00。有没有PHP magics 来解决这个问题?我的想法是将时间转换为13,59(或14,01),然后以某种方式围绕它们,但也许有更好的选择。
感谢任何帮助。
答案 0 :(得分:3)
我能想到的以HH:MM
格式字符串获取最近小时的最简单方法是:
已修复(再次)
$nearest_hour = str_pad(round(date('H') + ((date('i') - 1) / 60)),2,'0',STR_PAD_LEFT).':00';
答案 1 :(得分:1)
$time = '13:59';
list($h, $m) = explode(':', $time);
$h += $m > 30;
echo $h . ':00';
这样的虚拟解决方案怎么样? ; - )
答案 2 :(得分:1)
假设您的时间字符串格式为$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";
你的时间将适当设定。