how to get 'over', 'running', 'upcoming' status between two date using carbon I am trying to make a method by two date which return me a string like 'over' or 'running' or 'upcoming' status.
I also try this by manual code but its return me sometimes wrong answer.
/**
* Formatting date as system date
*/
function fixdate($date = null)
{
if($date)
{
$date = date_create($date);
$date = date_format($date, "Y-m-d");
return $date;
}
return null;
}
/**
* Get date status. (over / on going / upcoming)
*
*/
function date_status($date1, $date2 = null)
{
// validity checking
if(empty($date1)){return null;}
$date1 = fixdate($date1);
if($date2){
$date2 = fixdate($date2);
}
// $date1, $date2 = from, to
$today = new DateTime();
$today = $today->format('Y-m-d');
// same as date('Y-m-d');
if($date1 === $today) {
$date1 = 'ongoing';
}
elseif($date1 > $today) {
$date1 = 'upcoming';
}
else {
$date1 = 'over';
}
if(empty($date2)) {
return $date1;
}
else{
if($date2 === $today) {
$date2 = 'ongoing';
}
elseif($date2 > $today) {
$date2 = 'upcoming';
}
else {
$date2 = 'over';
}
// return calculation
// return - ongoing
if($date1 == 'ongoing' && $date2 == 'upcoming') {
return 'ongoing';
}
elseif($date1 == 'over' && $date2 == 'ongoing') {
return 'ongoing';
}
elseif($date1 == 'over' && $date2 == 'upcoming') {
return 'ongoing';
}
elseif($date1 == 'ongoing' && $date2 == 'ongoing') {
return 'ongoing';
}
// return - upcoming
elseif($date1 == 'upcoming' && $date2 == 'upcoming') {
return 'upcoming';
}
// return - over
elseif($date1 == 'over' && $date2 == 'over') {
return 'over';
}
}
}
So i need an easy way by laravel carbon which is return me like 'over', 'upcoming', 'running' etc status.
thanks.
Note that both dates are inclusive. The thing is still ongoing on end date
use Illuminate\Support\Carbon;
public function date_status(string $start, string $end): string
{
$start = Carbon::parse($start);
$end = Carbon::parse($end);
if(today()->lt($start)) {
return 'upcoming';
}
if(today()->gt($end)) {
return 'over';
}
return 'ongoing';
}
@Snapey Can you please tell me about "->lt()" or "->gt()" method? Or any link where I can know about it.
Please sign in or create an account to participate in this conversation.