Skip to content

Instantly share code, notes, and snippets.

@YaroslavShapoval
Created September 8, 2016 07:00
Show Gist options
  • Select an option

  • Save YaroslavShapoval/16609732fae0904b648593cdb6fe6d74 to your computer and use it in GitHub Desktop.

Select an option

Save YaroslavShapoval/16609732fae0904b648593cdb6fe6d74 to your computer and use it in GitHub Desktop.
Getting first and last days for week, month, year
<?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