【问题标题】:PHP Get last increment of five minutes [duplicate]PHP获取五分钟的最后增量[重复]
【发布时间】:2020-03-26 03:39:37
【问题描述】:

我希望从当前时间获得前五分钟的增量...

假设当前时间是 UTC 时间下午 12:07

我想输入一个变量 UTC 下午 12:05

有什么简单的方法可以解决这个问题?

【问题讨论】:

  • 您首先需要将时间转换为某种形式的时间值,然后提取分钟。然后,您应该能够操纵分钟。试一试,如果您遇到困难,请添加您的尝试,我们可以帮助您解决问题。
  • Carbon::now()->subMinutes(5)->format("h:i"),使用这个你可以很容易地得到预期的结果。
  • @JasimJuwel,这只是减去 5 分钟吗?也不确定他们是否使用 Carbon,但如果不是,则需要大量额外的代码才能舍入到 5 分钟(恕我直言)
  • @NigelRen 是的,它只是减去了 5 分钟
  • 投反对票是怎么回事?

标签: php


【解决方案1】:

没有任何内置功能可以让您检索“增量”,但是您可以用最少的代码计算它。此处使用模数可让您计算出最近 5 分钟标记的距离。它永远不会超过 5 分钟(300 秒),并且始终可以安全地减去以带您回到您想要的时间。

$now = time();
echo $now . PHP_EOL;
$five_minutes = 60*5; // 300
$offset = $now % $five_minutes;
$five_block = $now - $offset;
echo date('Y-m-d H:i:s', $five_block);

【讨论】:

    【解决方案2】:

    首先,您需要从存储的变量中提取分钟数。然后通过应用除法和地板函数在数学上很简单。为此,您可以先使用 intdiv(numerator, denominator) 除以 5,这将删除任何尾随小数点,然后再次乘以 5,以获得以 5 为增量的所需值。

    【讨论】:

      【解决方案3】:

      使用 time() 获取当前时间:

      $min = 300
      $currentTime = time();
      $mod = $currentTime % $min;
      $res = $currentTime - $mod;
      finalResult =  date('Y-m-d H:i:s', $res);
      

      【讨论】:

        【解决方案4】:

        您可以使用 DateTime 类 (https://3v4l.org/7aqMH) 做到这一点:

        <?php
        
        $date = new DateTime('12:07 UTC');
        $minutes = (int) $date->format('i');
        $rounded = round($minutes / 5) * 5;
        
        $date->setTime($date->format('H'), $rounded, $date->format('s'));
        

        或更简洁:

        <?php
        
        $date = new DateTime('12:07 UTC');
        $date->setTime(
            $date->format('H'), 
            round($date->format('i') / 5) * 5, 
            $date->format('s')
        );
        

        【讨论】:

        • 哈哈,好地方!在我的实验中,我最初错误地将四舍五入应用于秒数。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 2013-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多