I’m trying to use an if statement to say “If today is between two dates, do this…” etc.
It’s not working, and I’m at a total loss because as far as I can see – it SHOULD work!
if (date('d/m/y', strtotime('now')) >= date('d/m/y', strtotime('1 January 2021')) && date('d/m/y', strtotime('now')) <= date('d/m/y', strtotime('31 January 2021'))):
echo 'true';
else:
echo 'false';
endif;
Today is 3rd of December 2020 – so why is it telling me this statement is true?
PS. It does work if I change it to either, or both > 30th December 2020
and < 1st February 2021
– but I’m wary to do this in case it’s just a glitch and I’ve made an obvious coding mistake.
Advertisement
Answer
date('d/m/y')
gives you a string like 30/11/20
. Comparing dates in this format really means you’re comparing strings, which only works if the dates are in YYYYMMDD (or YYYY-MM-DD) format.
It’s much easier to just use strtotime()
to turn the English-like date into a Unix timestamp (just a big integer) and compare them directly:
if (
strtotime('now') >= strtotime('1 January 2021')
&&
strtotime('now') <= strtotime('31 January 2021')
) {
echo 'true';
} else {
echo 'false';
}