We want to compare two dates, that can be in two different years.
Therefore we tried this, but that does not seems to work
PHP:
<?php
$delivery_date = '08-20-2023';
$today = '26-07-2022';
if ($delivery_date > $today){
echo 'true';
}else{
echo 'false';
}
?>
See: https://www.tehplayground.com/sa29CAHd5SuuRkXv
How can we solve this?
EDIT:
Seems that we face another strange thing. For some reason it can not read the date well:
$var = '08-20-2023';
$delivery_date = date("Y-m-d", strtotime($var));
This will $delivery_date return: 1970-01-01
;
Fetching the following error: DateTime::__construct(): Failed to parse time string (08-20-2023) at position 0 (0): Unexpected character
What are we missing here, because we do not see the unexpected character?
You can wrap both of the two date strings in DateTime::createFromFormat()
. Match the first argument of the function with the format of the date string. You can find reference here: https://www.php.net/manual/en/datetime.format.php
$delivery_date = DateTime::createFromFormat('m-d-Y', '08-20-2023');
$today = DateTime::createFromFormat('d-m-Y', '26-07-2022');
if ($delivery_date > $today) {
echo 'true';
} else {
echo 'false';
}
Returns true
make sure both dates in same format
Proper way
<?php
$var = '08-20-2023';
$date_arr=explode('-',$var);
$deliver_timestamp=mktime(0, 0, 0,$date_arr[0],$date_arr[1], $date_arr[2]);
$today = '07-26-2022';
$tdate_arr=explode('-',$today);
$today_timestamp=mktime(0, 0, 0,$tdate_arr[0],$tdate_arr[1], $tdate_arr[2]);
if ($deliver_timestamp > $today_timestamp){
echo 'true';
}else{
echo 'false';
}
?>
simplified
<?php
$var = '08-20-2023';
$date_arr=explode('-',$var);
$deliver_timestamp=mktime(0, 0, 0,$date_arr[0],$date_arr[1], $date_arr[2]);
$today_timestamp=time();
if ($deliver_timestamp > $today_timestamp){
echo 'true';
}else{
echo 'false';
}
?>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.