【问题标题】:PHP, adjust time retrievedPHP,调整时间检索
【发布时间】:2011-12-10 09:17:23
【问题描述】:

我有一个 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),然后以某种方式对其进行四舍五入,但也许有更好的选择。

感谢任何帮助。

【问题讨论】:

  • 您似乎并不真正想要服务器时间。为什么不使用当地时间?
  • 正如我所说,我无法使用 CURL POST 参数发送客户端时间。
  • 你是说在服务器上记录时间,还是在客户端记录时间?请注意,您不需要发布数据,也可以通过查询字符串传递数据。如果您为请求创建一个 shell 脚本并将该脚本用于 cron 作业,这会更容易。

标签: php time format


【解决方案1】:

我能想到的以HH:MM格式字符串获取最近小时的最简单方法是:

已修复(再次)

$nearest_hour = str_pad(round(date('H') + ((date('i') - 1) / 60)),2,'0',STR_PAD_LEFT).':00';

【讨论】:

  • 所以,你的想法是得到 13.9 或 14.1,然后将它们四舍五入。如果是这样,这正是我正在寻找的紧凑代码。
  • 这就是想法 - 将小时:分钟转换为十进制浮点数,然后将其四舍五入为最接近的整数。
  • @AsTheWormTurns 刚刚才发现原来的代码有一点瑕疵,因为它不考虑秒数,当时间是9:30:59时会给出9:00,当它应该是10:00 .出于您的目的,这可能无关紧要,因为您的服务器/客户端上的时间不太可能结束,但为了完整起见,我已经更新了一个修复程序。
  • 这对我来说无关紧要,但感谢您的快速修复。
  • 我必须更正您的脚本,因为现在它写的是 8:00 而不是 08:00(8:00 不是 HH:MM)。这可以吗,还是有更优雅/高效/紧凑的方式? $rounded_hour = round(date('H') + ((date('i') - 1) / 60)); $nearest_hour = $rounded_hour<10 ? "0".$rounded_hour.":00" : $rounded_hour.":00".我也一定要试试这个:$nearest_hour = sprintf("%02d",round(date('H') + ((date('i') - 1) / 60))).":00";
【解决方案2】:
$time = '13:59';
list($h, $m) = explode(':', $time);
$h += $m > 30;

echo $h . ':00';

这样的虚拟解决方案怎么样? ;-)

【讨论】:

    【解决方案3】:

    假设您将$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";
    

    你的时间会被适当地设置。

    【讨论】:

    • @zerkms 是的,我刚刚注意到我的错误并纠正了它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2011-04-22
    • 2023-03-25
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2014-03-04
    • 2017-04-22
    相关资源
    最近更新 更多