我想使用当前时间戳并为数据库分配下一分钟的某些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年给出了一些奇怪的时间。请指出错误。
答案 0 :(得分:0)
您可以使用time()函数,不需要mktime
或strtotime
$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'));
它的作用是根据提供的参数构建一个新的时间戳。
这就像提供以下参数一样简单:
仅供参考,number_format()无效,因为它将时间戳转换为PHP不能用于计算的字符串(人类可读格式)。