PHP - How to find if a date is between 2 dates [duplicate] - php

This question already has answers here:
How can I compare two dates in PHP?
(13 answers)
Closed 9 years ago.
I get some datas with dates from a database :
$data['my_date'])
Type is date : YYYY-MM-DD
I would like to make with PHP a condition to found if $data['my_date']) is between 2 dates like :
if ($data['my_date'] >= 2009-01-01 && $data['my_date'] <= 2009-12-31) {
$datas = '5';
}
else {
$datas = 1;
}
It doesn't work as expected, the condition is not verified. What should i do ?

There is no literal syntax for dates, you should enclose them in quotes and treat them as strings. If you are using the YYYY-MM-DD format, then it is sortable alphabetically, and your current method should work.
if ($data['my_date'] >= '2009-01-01' && $data['my_date'] <= '2009-12-31') {
$datas = '5';
}
else {
$datas = 1;
}
If you don't quote your dates, you are doing integer operations:
$data['my_date'] >= 2009-01-01 ====> $data['my_date'] >= 2007

You need to convert all dates by strtotime() to timestamp and then compare them.
strtotime($data['my_date']) >= strtotime('2009-01-01')...

You use either strtotime() or mktime() to convert your dates into timestamp, then compare it.

Related

compare date string in php with mm-dd-yy format [duplicate]

This question already has answers here:
How can I compare two dates in PHP?
(13 answers)
Closed 5 years ago.
i need to compare two date from string,
my dates:
first date: 11-11-19
second date: 11-24-17
so i try to
$firstdate = "11-11-19";
$seconddate = "11-24-17";
if($firstdate < $seconddate)
{
echo "firstdate is minor than the secondate";
}
else
{
echo "seconddate is major than the firstdate";
}
if i change < or > the if statement should change, but i get always the firsdate...
how to do to compare two dates in this forma mm-dd-yy ?
Thanks
You can use strtotime to convert string to unix timestamp, and compare that.
$firstdate = strtotime("11-11-19");
$seconddate = strtotime("11-24-17");
if($firstdate < $seconddate)
{
echo "firstdate is minor than the secondate";
}
else
{
echo "seconddate is major than the firstdate";
}
You can convert both dates to timestamp:
echo (strtotime($firstdate) < strtotime($seconddate)) ? "firstdate is minor than the secondate" : "seconddate is major than the firstdate";

Compare dates with PHP [duplicate]

This question already has answers here:
Check if two PHP datetime objects are set to the same date ( ignoring time )
(10 answers)
Closed 7 years ago.
Here is my question:
I have 2 datetime fields with the following values.
- n_date = '2015-11-06 00:00:00.000'
- ArrivalDate = '2015-11-06 01:00:00.000'
I want to compare only the date part of these fields so that the following:
if ($n_date!=$v[ArrivalDate]
{
do something ...
}
Does not do something
thx in advance!
Use strtotime() for this,
if((date("Y-m-d",strtotime($n_date))) == (date("Y-m-d",strtotime($ArrivalDate)))) {
// both dtae are equal
} else {
// both date are not equal
}

How to compare two times using php [duplicate]

This question already has answers here:
How to compare two time in PHP
(11 answers)
Closed 8 years ago.
I have to compare time with a time value stored in a variable. I have devised the logic but it fails at time.
Following is the logic:
$diff = "22:32:53";
if ($diff > strtotime("072:00:00") )
{
echo "DO A";
}
else if ($diff < strtotime("08:00:00"))
{
echo "DO B";
}
else if( $diff > strtotime("08:00:00") && $diff < strtotime("072:00:00"))
{
echo "DO C";
}
But it echoes "DO A" whereas it should display "DO C". Could not figure out where I am missing the logic
Thanks in advance.
If you want to compare time (without date), the best way is to manually convert them into seconds, and compare the seconds. strtotime may work, but you'll need to run it on $diff too before comparing.
First thing, $diff is a string not an int, it should be:
$diff = strtotime("22:32:53");
Comparing is usually done using DateTime::diff
The comparison will not work anyway because if you check
var_dump(strtotime("072:00:00"));
will return:
false
strtotime is trying to match the format against a known time format, and 72 is not a valid hour.

PHP if condition based on date not working [duplicate]

This question already has answers here:
Compare given date with today
(14 answers)
Closed 8 years ago.
I want to execute a if statement where I want if given {date} is less or equal than today then {due_amount}= {paidbystudent} else {due_amount}= '0'
Here is my code:
if ({date} <= Today()) {
{due_amount}={paidbystudent};
} else {
{due_amount}='0';
}
But its not working. Please help me how to do this.
I have also tried this code but its not working properly this is checking only date and ignoring month and year
$todays_date=date("d/m/Y", strtotime("today"));
$date=date("d/m/Y", strtotime({date}));
if ($date <= $todays_date) {
{due_amount}={paidbystudent};
} else {
{due_amount}='0';
}
How about this:
$date = '2014-05-22'; // fetch from db, user input etc
if (strtotime($date) <= time()) {
echo 'paid by student';
} else {
echo 0;
}
DEMO
EDIT: As pointed out by deceze, a better way to approach this would be to compare the UNIX timestamp values instead of a date format.

PHP date function date range [duplicate]

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
PHP, see if date range is partly within another date range
I have 2 dates, a start date (2011-01-01) and an end date (2011-02-28).
I have a third date that starts on 2010-01-01 and ends on 2012-03-01. This means that this third date falls within the first 2 dates range.
If the third dates start and/or end date is not within the 2 dates then it must be false.
How can I check this using php?
You can do the following:
$startDate = strtotime('2011-01-01');
$endDate = strtotime('2011-02-28');
$intervalStart = strtotime('2011-02-01');
$intervalEnd = strtotime('2012-03-01');
if ($startDate < $intervalStart || $endDate > $intervalEnd) {
echo 'Not in the interval';
} else {
echo 'In the interval';
}

Categories