I've got a date in this format:
2009-01-01
How do I return the same date but 1 year earlier?
elitalon
9,0219 gold badges48 silver badges86 bronze badges
asked Jan 2, 2010 at 1:43
2
You can use strtotime
:
$date = strtotime['2010-01-01 -1 year'];
The strtotime
function returns a unix timestamp, to get a formatted string you can use date
:
echo date['Y-m-d', $date]; // echoes '2009-01-01'
answered Jan 2, 2010 at 1:45
0
Use strtotime[] function:
$time = strtotime["-1 year", time[]];
$date = date["Y-m-d", $time];
answered Jan 2, 2010 at 1:45
AlexAlex
3,1002 gold badges21 silver badges22 bronze badges
1
Using the DateTime object...
$time = new DateTime['2099-01-01'];
$newtime = $time->modify['-1 year']->format['Y-m-d'];
Or using now for today
$time = new DateTime['now'];
$newtime = $time->modify['-1 year']->format['Y-m-d'];
answered Sep 10, 2013 at 8:34
darrenwhdarrenwh
6305 silver badges4 bronze badges
1
an easiest way which i used and worked well
date['Y-m-d', strtotime['-1 year']];
this worked perfect.. hope this will help someone else too.. :]
answered Oct 26, 2016 at 6:58
saadksaadk
1,17512 silver badges17 bronze badges
// set your date here
$mydate = "2009-01-01";
/* strtotime accepts two parameters.
The first parameter tells what it should compute.
The second parameter defines what source date it should use. */
$lastyear = strtotime["-1 year", strtotime[$mydate]];
// format and display the computed date
echo date["Y-m-d", $lastyear];
answered Jan 2, 2010 at 1:57
NirmalNirmal
9,24110 gold badges54 silver badges80 bronze badges
On my website, to check if registering people is 18 years old, I simply used the following :
$legalAge = date['Y-m-d', strtotime['-18 year']];
After, only compare the the two dates.
Hope it could help someone.
answered Dec 5, 2018 at 8:09
MelomanMeloman
3,2343 gold badges39 silver badges44 bronze badges
Although there are many acceptable answers in response to this question, I don't see any examples of the sub
method using the \Datetime
object:
//www.php.net/manual/en/datetime.sub.php
So, for reference, you can also use a \DateInterval
to modify a \Datetime
object:
$date = new \DateTime['2009-01-01'];
$date->sub[new \DateInterval['P1Y']];
echo $date->format['Y-m-d'];
Which returns:
2008-01-01
For more information about \DateInterval
, refer to the documentation: //www.php.net/manual/en/class.dateinterval.php
answered Jan 13, 2020 at 13:09
Oliver TappinOliver Tappin
2,4511 gold badge23 silver badges42 bronze badges
You can use the following function to subtract 1 or any years from a date.
function yearstodate[$years] {
$now = date["Y-m-d"];
$now = explode['-', $now];
$year = $now[0];
$month = $now[1];
$day = $now[2];
$converted_year = $year - $years;
echo $now = $converted_year."-".$month."-".$day;
}
$number_to_subtract = "1";
echo yearstodate[$number_to_subtract];
And looking at above examples you can also use the following
$user_age_min = "-"."1";
echo date['Y-m-d', strtotime[$user_age_min.'year']];
answered Aug 26, 2017 at 11:37
0