19

最小の分に「丸める」必要があるコードがあります。

  • 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);

ここで、「秒」の部分をゼロに設定したいと思います。

私が望むように分を設定するだけのエレガントな方法はありますか?

注:「getTime()で60で除算し、整数に変換してから60を掛ける」のような解決策は探していません。「0」だけでなく、秒を設定するための一般的な解決策を探しています。

4

5 に答える 5

41

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...
于 2012-06-27T10:17:42.093 に答える
10

秒を「00」に設定するだけです

date_default_timezone_set('America/Sao_paulo');
$date = new DateTime();
echo $date->format('Y-m-d H:i:00');
于 2012-06-27T10:19:12.530 に答える
3

CarbonDateTimeオブジェクトのsecond/minuteまたはhour関数を使用して秒/分または時間を設定するための最良の方法。(明らかに、カーボンオブジェクトを作成する必要があります)

\Carbon\Carbon::now()->hour(2)->minute(20)->second(0);
于 2019-04-03T06:32:02.103 に答える
0

私はこれが遅い答えであることを知っています、しかしそれはそれが私を助けた方法で誰かを助けるかもしれません。

特定のタイムゾーンが必要な場合は、最初の行を追加できます

date_default_timezone_set('Africa/Johannesburg'); $created = date('Y-m-d H:i:00', time());

于 2019-02-27T19:01:57.117 に答える
0

ドキュメントから

$dt = Carbon::create(2012, 1, 31, 15, 32, 45);
echo $dt->startOfMinute(); // 2012-01-31 15:32:00
于 2020-01-10T23:40:22.350 に答える