Improved DateTime functionality for php by extending native DateTime and DateTimeZone classes. You can use shorthand methods for various operations. Also, different locales are supported, thanks to Intl extension.
composer require ardabeyazoglu/datetime
<?phpuse \DateTimeImproved\DateTime;
date_default_timezone_set("UTC"); // $date = newDateTime("2017-06-03 15:30:15", "UTC"); // Sat, 03 Jun 2017 15:30:15 +0000$date = newDateTime("now", "Europe/Amsterdam"); // Sun, 23 Jul 2017 22:22:33 +0200$date = newDateTime("+3 hour", "Europe/Amsterdam"); // Mon, 24 Jul 2017 01:22:33 +0200$date = newDateTime("-2 day", "Europe/Amsterdam"); // Fri, 21 Jul 2017 22:22:33 +0200$date = newDateTime("yesterday", "+01:00"); // Sat, 22 Jul 2017 21:22:33 +0100echo$date; // Sat, 22 Jul 2017 21:22:33 +0100echo$date->getTimezone()->getUtcOffset(); // 3600echo$date->format("F y, l"); // July 17, Saturdayecho$date->setLocale("es_ES")->format("F y, l"); // julio 17, sábadoecho$date->setLocale("en_EN"); // Sat, 22 Jul 2017 21:22:33 +0100echo$date->formatIso("yyyy-MM-dd"); // 2017-07-22echo$date->getIso(); // 2017-07-22T21:22:33+0100echo$date->getAtom(); // 2017-07-22T21:22:33+01:00echo$date->getCookie(); // Saturday, 22-Jul-2017 21:22:33 GMT+1echo$date->toUtc()->isUtc() ? "Yes" : "No"; // Yesecho$date->isMonth("july") ? "Yes" : "No"; // Yesecho$date->isDay("soboto", true) ? "Yes" : "No"; // Noecho$date->isToday() ? "Yes" : "No"; // Noecho$date->isCurrentWeek() ? "Yes" : "No"; // Yesecho$date->isCurrentMonth() ? "Yes" : "No"; // Yesecho$date->isCurrentYear() ? "Yes" : "No"; // Yesecho$date->isYesterday() ? "Yes" : "No"; // Yesecho$date->isTomorrow() ? "Yes" : "No"; // Noecho$date->isLeapYear() ? "Yes" : "No"; // Noecho$date->addDay(3); // Tue, 25 Jul 2017 20:22:33 +0000echo$date->subDay(2); // Sun, 23 Jul 2017 20:22:33 +0000echo$date->addWeek(-2); // Sun, 09 Jul 2017 20:22:33 +0000echo$date->addMonth(4); // Thu, 09 Nov 2017 20:22:33 +0000echo$date->addYear(1); // Fri, 09 Nov 2018 20:22:33 +0000echo$date->setHour(12); // Fri, 09 Nov 2018 12:22:33 +0000echo$date->setMinute(25); // Fri, 09 Nov 2018 12:25:33 +0000echo$date->getYear(); // 2018echo$date->getSecond(); // 33echo$date->getWeekday(); // 5echo$date->getDayName(); // Fridayecho$date->getMonthName(); // Novemberecho$date->diffDays(DateTime::yesterday()); // -474echo$date->setBeginningOfDay(); // Sat, 30 Nov 2019 00:00:00 +0000echo$date->setEndOfDay(); // Sat, 30 Nov 2019 23:59:59 +0000echo$date->setBeginningOfWeek(); // Mon, 25 Nov 2019 00:00:00 +0000echo$date->setEndOfWeek(); // Sun, 01 Dec 2019 23:59:59 +0000echo$date->setBeginningOfMonth(true); // Sun, 01 Dec 2019 00:00:00 +0000echo$date->setEndOfMonth(); // Tue, 31 Dec 2019 23:59:59 +0000echo$date->setBeginningOfQuarter(true); // Tue, 01 Oct 2019 00:00:00 +0000echo$date->setEndOfQuarter(); // Tue, 31 Dec 2019 23:59:59 +0000echojson_encode($date); // {"datetime":"2018-11-30T23:59:59+00:00","timezone":{"name":"UTC","location":{"country_code":"??","latitude":0,"longitude":0,"comments":""}},"locale":"en_EN"}echo DateTime::getDaysOfMonth(2, 2017); // 28echo DateTime::yesterday(); // Sat, 22 Jul 2017 20:22:33 +0000echo DateTime::tomorrow(); // Mon, 24 Jul 2017 20:22:33 +0000echo DateTime::now("Europe/Istanbul"); // Sun, 23 Jul 2017 23:22:33 +0300- Check out the docs for all methods.