我有一个代码,我必须“舍入”到最低分钟。
16:05:00
应该成为16:05:00
16:05:01
应该成为16:05:00
16:05:29
应该成为16:05:00
16:05:30
应该成为16:05:00
16:05:31
应该成为16:05:00
16:05:59
应该成为16:05:00
我想使用DateTime对象。 没有诸如以下的功能:
setHours()
setMinutes()
setSeconds()
这是我的代码的开头:
$my_date=DateTime::createFromFormat(
'Y-m-d H:i:s',
$bd_date
);
$my_date->setTimezone(self::$TimeZone);
现在我想将“秒”部分设置为零。
你有一种优雅的方式,只按照我想要的方式设置分钟吗?
Nota:我不是在寻找像“将byTime()除以60,转换为整数,然后乘以60”的解决方案。我正在寻找一种通用的解决方案来设置秒数,而不仅仅是“0”。
答案 0 :(得分:28)
setTime优雅吗?
$my_date->setTime ( $my_date->format("H"), $my_date->format("i"), $new_second_val );
$my_date->setTime ( $my_date->format("H"), $new_minute_val, $new_second_val );
// etc...
答案 1 :(得分:7)
只需将秒数设为“00”
date_default_timezone_set('America/Sao_paulo');
$date = new DateTime();
echo $date->format('Y-m-d H:i:00');
答案 2 :(得分:0)
我知道这是一个较晚的答案,但它可能以帮助我的方式帮助某人。
如果需要特定的时区,可以添加第一行
date_default_timezone_set('Africa/Johannesburg');
$created = date('Y-m-d H:i:00', time());
答案 3 :(得分:0)
仅通过使用Carbon DateTime对象上的秒/分钟或小时功能来设置秒/分钟或小时的最佳方法。 (很明显,您将需要创建碳对象)
\Carbon\Carbon::now()->hour(2)->minute(20)->second(0);
答案 4 :(得分:0)
应该是
$dt = Carbon::create(2012, 1, 31, 15, 32, 45);
echo $dt->startOfMinute(); // 2012-01-31 15:32:00