Php:DateTime:如何设置仅秒(不是几小时都不是分钟)

Oli*_*ons 14 php datetime

我有一个代码,我必须"舍入"到最低分钟.

  • 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);
Run Code Online (Sandbox Code Playgroud)

现在我想将"秒"部分设置为零.

你有一种优雅的方式,只按照我想要的方式设置分钟吗?

Nota:我不是在寻找像"除以getTime()60,转换为整数,然后乘以60"的解决方案.我正在寻找一种通用的解决方案来设置秒数,而不仅仅是"0".

wro*_*sty 29

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...
Run Code Online (Sandbox Code Playgroud)

  • 注意:如果你有 `declare(strict_types=1)` ,你需要向 int 添加显式转换,即 `(int) $my_date->format("H")` 等。 (3认同)
  • 好的。然而,Carbon 并不在 PHP 标准库中,因此虽然它可能更优雅,但它并不完全符合 OP 的要求。 (2认同)
  • “我想使用 DateTime 对象。” (2认同)

Edu*_*sso 7

只需将秒数设置为"00"

date_default_timezone_set('America/Sao_paulo');
$date = new DateTime();
echo $date->format('Y-m-d H:i:00');
Run Code Online (Sandbox Code Playgroud)