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?
CodePudding user response:
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
CodePudding user response:
You have multiple methods for doing this. If both are in same foramt
<?php
$date1 = "1998-11-24";
$date2 = "1997-03-26";
if ($date1 > $date2)
echo "$date1 is latest than $date2";
else
echo "$date1 is older than $date2";
?>
Output: 1998-11-24 is latest than 1997-03-26
If both have different formats
<?php
$date1 = "12-03-26";
$date2 = "2011-10-24";
$dateTimestamp1 = strtotime($date1);// Use strtotime() function to convert
$dateTimestamp2 = strtotime($date2);
// Compare the timestamp date
if ($dateTimestamp1 > $dateTimestamp2)
echo "$date1 is latest than $date2";
else
echo "$date1 is older than $date2";
?>
Output: 12-03-26 is latest than 2011-10-24
CodePudding user response:
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';
}
?>