Get the last day of the current year as date
Asked Answered
M

4

15

How can I get the last day (Dec 31) of the current year as a date using PHP?

I tried the following but this doesn't work:

$year = date('Y');
$yearEnd =  strtotime($year . '-12-31');

What I need is a date that looks like 2014-12-31 for the current year.

Madelene answered 24/2, 2014 at 0:35 Comment(0)
M
22

PHP strtotime() uses the current date/time as a basis (so it will use this current year), and you need date() to format:

$yearEnd = date('Y-m-d', strtotime('Dec 31'));

//or

$yearEnd = date('Y-m-d', strtotime('12/31'));
Martingale answered 24/2, 2014 at 1:7 Comment(0)
E
15

You can just concatenate actual year with required date

$year = date('Y') . '-12-31';
echo $year;
//output 2014-12-31
Ellaelladine answered 24/2, 2014 at 0:38 Comment(2)
... or even date('Y-12-31')Olmsted
I'll go for the second option - thanks a lot for the quick help !Madelene
B
15

DateTime is perfectly capable of doing this:

$endOfYear = new \DateTime('last day of December this year');

You can even combine it with more modifiers to get the end of next year:

$endOfNextYear = new \DateTime('last day of December this year +1 years');
Biracial answered 10/4, 2018 at 8:12 Comment(4)
How can i pass an year as a parameter and get the last day of the year ?Monaxial
In that case simply pass the year $endOfYear = new \DateTime('last day of December 2019'); but bear in mind that this only works for years >1000 as for lower years you will get a 'Failed to parse time string' exception.Biracial
Note that the string "last day of December this year" can be useful to use with the modify() function.Fane
To get the last day of last year use "last day of december last year"Farsighted
B
5

Another way to do this is use the Relative Formats of strtotime()

$yearEnd = date('Y-m-d', strtotime('last day of december this year'));

// or

$yearEnd = date('Y-m-d', strtotime('last day of december'));
Brandeebranden answered 17/5, 2017 at 21:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.