PHP:时间戳

时间:2013-11-08 14:14:43

标签: php

我想使用当前时间戳并为数据库分配下一分钟的某些cron函数。也就是说,如果它是7小时30分20秒,那么我想从7小时31分0秒开始。我面临一些奇怪的问题。

如果我这样做 -

$current_time_stamp = time() + 1*60;

它不会从下一分钟开始。但如果我这样做 -

$current_time_stamp = number_format(time()/60);
$current_time_stamp = $current_time_stamp*60 + 1*60;

它在1970年给出了一些奇怪的时间。请指出错误。

4 个答案:

答案 0 :(得分:0)

您可以使用time()函数,不需要mktimestrtotime

$nextmin = ceil(time()/60)*60;

但是,strtotime可以像这样使用

$nextmin=floor(strtotime("+1 minute"));

函数number_format()需要至少两个参数,格式化数和小数位数。你必须在其中加上小数位数。

答案 1 :(得分:0)

$current_time_stamp = time() + 1*60;

这会奏效。当然设置新时间,当启动cronjob时 - 而不是最后,因为那时你需要减去cron的持续时间才能得到一分钟。

最好不要使用time(),而是使用数据库中的旧时间戳。

答案 2 :(得分:0)

$time = time();
$time = strtotime(date(sprintf('Y-m-d H:%02d:00', floor(date('i', $time) / 5) * 5), $time)); // round up to 5 minutes

舍入到5分钟的示例。一分钟就会更容易

$time = strtotime(date('Y-m-d H:i:00', time()));
// you will get floor time.
$time = strtotime('+1 minute', $time); // increase time for 1 minute

你不能像这样使用时间戳。因为时间戳有闰年和时区的变化。简单的数学函数不要考虑这个。

答案 3 :(得分:0)

试试这个:

  

$ next_minute = mktime(日期('H'),日期('i')+ 1,0);

这实际上就是这个的捷径:

  

$ next_minute = mktime(日期('H'),日期('i')+ 1,0,日期('d'),日期('m'),日期('Y'));

它的作用是根据提供的参数构建一个新的时间戳。

这就像提供以下参数一样简单:

  1. 当前时间
  2. 当前分钟加一
  3. 零秒
  4. 当前日期
  5. 当月
  6. 当年
  7. 请参阅mktime()date()

    仅供参考,number_format()无效,因为它将时间戳转换为PHP不能用于计算的字符串(人类可读格式)。