$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');
$ nowの時刻が時間範囲内にあるかどうかを確認するにはどうすればよいですか?
$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');
$time = $now->format('H:i:s');
if ($time >= $start && $time <= $end) {
...
}
それを行う必要がありますが、日付は考慮されていません
これを試して:
_ $time = Carbon::now();
$morning = Carbon::create($time->year, $time->month, $time->day, 8, 0, 0); //set time to 08:00
$evening = Carbon::create($time->year, $time->month, $time->day, 18, 0, 0); //set time to 18:00
if($time->between($morning, $evening, true)) {
//current time is between morning and evening
} else {
//current time is earlier than morning or later than evening
}
_
$time->between($morning, $evening, true)
のtrue
は、_$time
_が_$morning
_と_$evening
_の間にあるかどうかをチェックします。代わりにfalse
と書くと、2回の間にあるかどうかだけがチェックされますが、含まれていません。
実際には、true
はデフォルトで設定されており、不要であるため、そのままにしておくことができます。
日付と時刻をCarbonと比較する方法の詳細については、 ここ を確認してください。
$restrictStartTime = Carbon::createFromTime(22, 0, 0); //carbon inbuild function which will create todays date with the given time
$restrictEndTime = Carbon::createFromTime(8, 0, 0)->addDays(1); //this will create tomorrows date with the given time
$now = Carbon::now();
if($now->gt($restrictStartTime) && $now->lt($restrictEndTime)) {
.....
}
Carbonを使用してこれを実現する方法はいくつかあります。最も簡単な方法の1つは、createFromTimeString
およびbetween
メソッドを使用することです。
$now = Carbon::now();
$start = Carbon::createFromTimeString('22:00');
$end = Carbon::createFromTimeString('08:00')->addDay();
if ($now->between($start, $end)) {
// ¯\_(ツ)_/¯
}
これを試して :
$start = 22; //Eg. start hour
$end = 08; //Eg. end hour
$now = Carbon::now('UTC');
if( $start < $now->hour && $now->hour < $end){
// Do something
}
クリスが指摘しようとしているのは、終わりの時が真夜中を超える場合、あなたはそれを説明しなければならないということです。
これはそれを行うための最もクリーンな方法ではありませんが、これはうまくいくように見える方法です。
private function isNowBetweenTimes($timezone, $startDateTime, $endDateTime) {
$curTimeLocal = Carbon::now($timezone);
$startTime = $curTimeLocal->copy();
$startTime->hour = $startDateTime->hour;
$startTime->minute = $startDateTime->minute;
$endTime = $curTimeLocal->copy();
$endTime->hour = $endDateTime->hour;
$endTime->minute = $endDateTime->minute;
if ($endTime->lessThan($startTime))
$endTime->addDay();
return ($curTimeLocal->isBetween($startTime, $endTime));
}
この例では、秒ではなく時間と分のみを考慮していますが、それも簡単にコピーできます。これの鍵は、現在の時刻と比較する前に開始時刻と終了時刻を比較し、終了時刻が開始時刻よりも短い場合は終了時刻に1日を追加することです。
<?php
$now = date("H");
if ($now < "20") {
echo "Have a good day!";
}
以下のコードをお試しください、
$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');
$nowTime = $now->hour.':'.$now->minute.':'.$now->second;
if(strtotime($nowTime) > strtotime($start) && strtotime($nowTime) < strtotime($end) ) {
echo 'YES';
} else {
echo 'NO';
}