web-dev-qa-db-ja.com

放射性炭素年代測定オブジェクトが1日の始まりにあるかどうかを確認するにはどうすればよいですか?

Carbon を使用して、MySQLデータベースから取得した日付を操作しています。私は次のような日付を持っています:

  • 2017-07-19 00:00:00
  • 2017-06-26 15:27:57

ご覧のとおり、最初は1日の始まりです。そのような日付を表示するときは、時間の部分を省略したいと思います。それぞれに異なるフォーマットを使用できることを私は知っています。例えば:

  • F d Y時間のない日付の場合。
  • F d Y g:ia時間のある日付の場合。

私が達成できなかったことは、日付にいずれかの形式を適用する時間部分があるかどうかを確認する簡単な方法です。時間、分、秒を確認するには、個別のゲッターを使用する必要がありますか?

6
Gustavo Straube

1日の始まりかどうかを確認したいだけの場合は、CarbonのstartOfDay()modifier および comparison を使用して確認するのはかなり簡単です。

$date = Carbon::now(); // or whatever you're using to set it
$start = $date->copy()->startOfDay();
if($date->eq($start)) {
    // do your formatting here
}
12
aynber

Carbonオブジェクトのタイムスタンプから「today」のタイムスタンプ(yyyy-mm-dd 0000:00:00)を引いたものを使用すると、00:00からその日付までに経過した秒数がわかります。

$secondsPassed = $carbonObject->timestamp - $carbonObject->copy()->startOfDay()->timestamp;
if ($secondsPassed > 8 * 60 * 60) {
    // time is passed 08:00 am
} 
1
Dekel

その間、それはさらに簡単です。 is....()メソッド( 炭素比較 を参照)を次のように使用します。

$date = Carbon::now();
if($date->isStartOfDay()) {     // check if hour is 00:00:00
    // whatever
}
1
SeparateReality