Created
September 8, 2016 07:00
-
-
Save YaroslavShapoval/16609732fae0904b648593cdb6fe6d74 to your computer and use it in GitHub Desktop.
Getting first and last days for week, month, year
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| function getFirstWeekDayDatetime($datetime) { | |
| return $datetime->modify('+ 1 day')->modify('last monday'); | |
| } | |
| function getLastWeekDayDatetime($datetime) { | |
| return $datetime->modify('- 1 day')->modify('next sunday'); | |
| } | |
| function getFirstMonthDayDatetime($datetime) { | |
| return $datetime->modify('first day of this month'); | |
| } | |
| function getLastMonthDayDatetime($datetime) { | |
| return $datetime->modify('last day of this month'); | |
| } | |
| function getFirstYearDayDatetime($datetime) { | |
| return $datetime->modify('first day of January'); | |
| } | |
| function getLastYearDayDatetime($datetime) { | |
| return $datetime->modify('last day of December'); | |
| } | |
| $format = 'Y-m-d'; | |
| echo "<strong>First day of the week</strong><br>"; | |
| echo "2016-05-13, Fri -> " . getFirstWeekDayDatetime(new Datetime('2016-05-13'))->format($format) . "<br>"; | |
| echo "2016-05-14, Sat -> " . getFirstWeekDayDatetime(new Datetime('2016-05-14'))->format($format) . "<br>"; | |
| echo "2016-05-15, Sun -> " . getFirstWeekDayDatetime(new Datetime('2016-05-15'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-05-16, Mon -> " . getFirstWeekDayDatetime(new Datetime('2016-05-16'))->format($format) . "<br>"; | |
| echo "2016-05-17, Tue -> " . getFirstWeekDayDatetime(new Datetime('2016-05-17'))->format($format) . "<br>"; | |
| echo "2016-05-18, Wed -> " . getFirstWeekDayDatetime(new Datetime('2016-05-18'))->format($format) . "<br>"; | |
| echo "2016-05-19, Thu -> " . getFirstWeekDayDatetime(new Datetime('2016-05-19'))->format($format) . "<br>"; | |
| echo "<br><br>"; | |
| echo "<strong>Last day of the week</strong><br>"; | |
| echo "2016-05-13, Fri -> " . getLastWeekDayDatetime(new Datetime('2016-05-13'))->format($format) . "<br>"; | |
| echo "2016-05-14, Sat -> " . getLastWeekDayDatetime(new Datetime('2016-05-14'))->format($format) . "<br>"; | |
| echo "2016-05-15, Sun -> " . getLastWeekDayDatetime(new Datetime('2016-05-15'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-05-16, Mon -> " . getLastWeekDayDatetime(new Datetime('2016-05-16'))->format($format) . "<br>"; | |
| echo "2016-05-17, Tue -> " . getLastWeekDayDatetime(new Datetime('2016-05-17'))->format($format) . "<br>"; | |
| echo "2016-05-18, Wed -> " . getLastWeekDayDatetime(new Datetime('2016-05-18'))->format($format) . "<br>"; | |
| echo "2016-05-19, Thu -> " . getLastWeekDayDatetime(new Datetime('2016-05-19'))->format($format) . "<br>"; | |
| echo "<br><br><br>"; | |
| echo "<strong>First day of the month</strong><br>"; | |
| echo "2016-03-30 -> " . getFirstMonthDayDatetime(new Datetime('2016-03-30'))->format($format) . "<br>"; | |
| echo "2016-03-31 -> " . getFirstMonthDayDatetime(new Datetime('2016-03-31'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-04-01 -> " . getFirstMonthDayDatetime(new Datetime('2016-04-01'))->format($format) . "<br>"; | |
| echo "2016-04-02 -> " . getFirstMonthDayDatetime(new Datetime('2016-04-02'))->format($format) . "<br>"; | |
| echo "2016-04-15 -> " . getFirstMonthDayDatetime(new Datetime('2016-04-15'))->format($format) . "<br>"; | |
| echo "2016-04-29 -> " . getFirstMonthDayDatetime(new Datetime('2016-04-29'))->format($format) . "<br>"; | |
| echo "2016-04-30 -> " . getFirstMonthDayDatetime(new Datetime('2016-04-30'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-05-01 -> " . getFirstMonthDayDatetime(new Datetime('2016-05-01'))->format($format) . "<br>"; | |
| echo "2016-05-02 -> " . getFirstMonthDayDatetime(new Datetime('2016-05-02'))->format($format) . "<br>"; | |
| echo "2016-05-15 -> " . getFirstMonthDayDatetime(new Datetime('2016-05-15'))->format($format) . "<br>"; | |
| echo "2016-05-29 -> " . getFirstMonthDayDatetime(new Datetime('2016-05-29'))->format($format) . "<br>"; | |
| echo "2016-05-30 -> " . getFirstMonthDayDatetime(new Datetime('2016-05-30'))->format($format) . "<br>"; | |
| echo "2016-05-31 -> " . getFirstMonthDayDatetime(new Datetime('2016-05-31'))->format($format) . "<br>"; | |
| echo "<br><br>"; | |
| echo "<strong>Last day of the month</strong><br>"; | |
| echo "2016-03-30 -> " . getLastMonthDayDatetime(new Datetime('2016-03-30'))->format($format) . "<br>"; | |
| echo "2016-03-31 -> " . getLastMonthDayDatetime(new Datetime('2016-03-31'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-04-01 -> " . getLastMonthDayDatetime(new Datetime('2016-04-01'))->format($format) . "<br>"; | |
| echo "2016-04-02 -> " . getLastMonthDayDatetime(new Datetime('2016-04-02'))->format($format) . "<br>"; | |
| echo "2016-04-15 -> " . getLastMonthDayDatetime(new Datetime('2016-04-15'))->format($format) . "<br>"; | |
| echo "2016-04-29 -> " . getLastMonthDayDatetime(new Datetime('2016-04-29'))->format($format) . "<br>"; | |
| echo "2016-04-30 -> " . getLastMonthDayDatetime(new Datetime('2016-04-30'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-05-01 -> " . getLastMonthDayDatetime(new Datetime('2016-05-01'))->format($format) . "<br>"; | |
| echo "2016-05-02 -> " . getLastMonthDayDatetime(new Datetime('2016-05-02'))->format($format) . "<br>"; | |
| echo "2016-05-15 -> " . getLastMonthDayDatetime(new Datetime('2016-05-15'))->format($format) . "<br>"; | |
| echo "2016-05-29 -> " . getLastMonthDayDatetime(new Datetime('2016-05-29'))->format($format) . "<br>"; | |
| echo "2016-05-30 -> " . getLastMonthDayDatetime(new Datetime('2016-05-30'))->format($format) . "<br>"; | |
| echo "2016-05-31 -> " . getLastMonthDayDatetime(new Datetime('2016-05-31'))->format($format) . "<br>"; | |
| echo "<br><br><br>"; | |
| echo "<strong>First day of the year</strong><br>"; | |
| echo "2015-01-01 -> " . getFirstYearDayDatetime(new Datetime('2015-01-01'))->format($format) . "<br>"; | |
| echo "2015-01-31 -> " . getFirstYearDayDatetime(new Datetime('2015-01-31'))->format($format) . "<br>"; | |
| echo "2015-12-30 -> " . getFirstYearDayDatetime(new Datetime('2015-12-30'))->format($format) . "<br>"; | |
| echo "2015-12-31 -> " . getFirstYearDayDatetime(new Datetime('2015-12-31'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-01-01 -> " . getFirstYearDayDatetime(new Datetime('2016-01-01'))->format($format) . "<br>"; | |
| echo "2016-01-31 -> " . getFirstYearDayDatetime(new Datetime('2016-01-31'))->format($format) . "<br>"; | |
| echo "2016-12-30 -> " . getFirstYearDayDatetime(new Datetime('2016-12-30'))->format($format) . "<br>"; | |
| echo "2016-12-31 -> " . getFirstYearDayDatetime(new Datetime('2016-12-31'))->format($format) . "<br>"; | |
| echo "<br><br>"; | |
| echo "<strong>Last day of the year</strong><br>"; | |
| echo "2015-01-01 -> " . getLastYearDayDatetime(new Datetime('2015-01-01'))->format($format) . "<br>"; | |
| echo "2015-01-31 -> " . getLastYearDayDatetime(new Datetime('2015-01-31'))->format($format) . "<br>"; | |
| echo "2015-12-30 -> " . getLastYearDayDatetime(new Datetime('2015-12-30'))->format($format) . "<br>"; | |
| echo "2015-12-31 -> " . getLastYearDayDatetime(new Datetime('2015-12-31'))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-01-01 -> " . getLastYearDayDatetime(new Datetime('2016-01-01'))->format($format) . "<br>"; | |
| echo "2016-01-31 -> " . getLastYearDayDatetime(new Datetime('2016-01-31'))->format($format) . "<br>"; | |
| echo "2016-12-30 -> " . getLastYearDayDatetime(new Datetime('2016-12-30'))->format($format) . "<br>"; | |
| echo "2016-12-31 -> " . getLastYearDayDatetime(new Datetime('2016-12-31'))->format($format) . "<br>"; | |
| echo "<br><br><br>"; | |
| echo "<strong>First day of the first week of the month</strong><br>"; | |
| echo "2016-03-30 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-03-30')))->format($format) . "<br>"; | |
| echo "2016-03-31 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-03-31')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-04-01 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-04-01')))->format($format) . "<br>"; | |
| echo "2016-04-02 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-04-02')))->format($format) . "<br>"; | |
| echo "2016-04-15 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-04-15')))->format($format) . "<br>"; | |
| echo "2016-04-29 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-04-29')))->format($format) . "<br>"; | |
| echo "2016-04-30 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-04-30')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-05-01 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-05-01')))->format($format) . "<br>"; | |
| echo "2016-05-02 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-05-02')))->format($format) . "<br>"; | |
| echo "2016-05-15 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-05-15')))->format($format) . "<br>"; | |
| echo "2016-05-29 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-05-29')))->format($format) . "<br>"; | |
| echo "2016-05-30 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-05-30')))->format($format) . "<br>"; | |
| echo "2016-05-31 -> " . getFirstWeekDayDatetime(getFirstMonthDayDatetime(new Datetime('2016-05-31')))->format($format) . "<br>"; | |
| echo "<br><br>"; | |
| echo "<strong>Last day of the last week of the month</strong><br>"; | |
| echo "2016-03-30 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-03-30')))->format($format) . "<br>"; | |
| echo "2016-03-31 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-03-31')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-04-01 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-04-01')))->format($format) . "<br>"; | |
| echo "2016-04-02 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-04-02')))->format($format) . "<br>"; | |
| echo "2016-04-15 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-04-15')))->format($format) . "<br>"; | |
| echo "2016-04-29 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-04-29')))->format($format) . "<br>"; | |
| echo "2016-04-30 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-04-30')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-05-01 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-05-01')))->format($format) . "<br>"; | |
| echo "2016-05-02 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-05-02')))->format($format) . "<br>"; | |
| echo "2016-05-15 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-05-15')))->format($format) . "<br>"; | |
| echo "2016-05-29 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-05-29')))->format($format) . "<br>"; | |
| echo "2016-05-30 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-05-30')))->format($format) . "<br>"; | |
| echo "2016-05-31 -> " . getLastWeekDayDatetime(getLastMonthDayDatetime(new Datetime('2016-05-31')))->format($format) . "<br>"; | |
| echo "<br><br><br>"; | |
| echo "<strong>First day of the first week of the year</strong><br>"; | |
| echo "2015-01-01 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2015-01-01')))->format($format) . "<br>"; | |
| echo "2015-01-31 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2015-01-31')))->format($format) . "<br>"; | |
| echo "2015-12-30 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2015-12-30')))->format($format) . "<br>"; | |
| echo "2015-12-31 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2015-12-31')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-01-01 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2016-01-01')))->format($format) . "<br>"; | |
| echo "2016-01-31 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2016-01-31')))->format($format) . "<br>"; | |
| echo "2016-12-30 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2016-12-30')))->format($format) . "<br>"; | |
| echo "2016-12-31 -> " . getFirstWeekDayDatetime(getFirstYearDayDatetime(new Datetime('2016-12-31')))->format($format) . "<br>"; | |
| echo "<br><br>"; | |
| echo "<strong>Last day of the last week of the year</strong><br>"; | |
| echo "2015-01-01 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2015-01-01')))->format($format) . "<br>"; | |
| echo "2015-01-31 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2015-01-31')))->format($format) . "<br>"; | |
| echo "2015-12-30 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2015-12-30')))->format($format) . "<br>"; | |
| echo "2015-12-31 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2015-12-31')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-01-01 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2016-01-01')))->format($format) . "<br>"; | |
| echo "2016-01-31 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2016-01-31')))->format($format) . "<br>"; | |
| echo "2016-12-30 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2016-12-30')))->format($format) . "<br>"; | |
| echo "2016-12-31 -> " . getLastWeekDayDatetime(getLastYearDayDatetime(new Datetime('2016-12-31')))->format($format) . "<br>"; | |
| echo "<br><br><br>"; | |
| echo "<strong>First day of the first month of the year</strong><br>"; | |
| echo "2015-01-01 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-01-01')))->format($format) . "<br>"; | |
| echo "2015-01-31 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-01-31')))->format($format) . "<br>"; | |
| echo "2015-12-30 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-12-30')))->format($format) . "<br>"; | |
| echo "2015-12-31 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-12-31')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-01-01 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-01-01')))->format($format) . "<br>"; | |
| echo "2016-01-31 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-01-31')))->format($format) . "<br>"; | |
| echo "2016-12-30 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-12-30')))->format($format) . "<br>"; | |
| echo "2016-12-31 -> " . getFirstMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-12-31')))->format($format) . "<br>"; | |
| echo "<br><br>"; | |
| echo "<strong>Last day of the last month of the year</strong><br>"; | |
| echo "2015-01-01 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-01-01')))->format($format) . "<br>"; | |
| echo "2015-01-31 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-01-31')))->format($format) . "<br>"; | |
| echo "2015-12-30 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-12-30')))->format($format) . "<br>"; | |
| echo "2015-12-31 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2015-12-31')))->format($format) . "<br>"; | |
| echo "<br>"; | |
| echo "2016-01-01 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-01-01')))->format($format) . "<br>"; | |
| echo "2016-01-31 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-01-31')))->format($format) . "<br>"; | |
| echo "2016-12-30 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-12-30')))->format($format) . "<br>"; | |
| echo "2016-12-31 -> " . getLastMonthDayDatetime(getFirstYearDayDatetime(new Datetime('2016-12-31')))->format($format) . "<br>"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment