Simple class to play with time
composer require twipsi/chronos
You can set the initial date as a DateTime object or a Chronos instance or a valid date string or a timestamp.
Chronos::date(new Chronos)...
Chronos::date(new DateTime)...
Chronos::date('2022-05-05 10:10:10')...
Chronos::date(1664524279)...
new Chronos(new DateTime)
Or just get the current datetime.
Chronos::date()...
You can specify each option fluently after setting the initial date.
Chronos::date($date)
->setDateTimeFormat("Y-m-d H:i:s")
->setDateFormat("Y-m-d")
->setTimeFormat("H:i:s")
->setTimezone("UTC")
You have multiple methods to retrieve the datetime as a string.
Chronos::date($date)...
->getDateObject()
->stamp()
->getDateTime()
->getDate()
->getTime()
->getHour()
->getMinute()
->getSeconds()
->getDayName()
->getDayShortName()
->getDayNumber()
->getWeekNumber()
->getMonthName()
->getShortMonthName()
->getMonthNumber()
->getYear()
You have several methods to manipulate the initial time before retrieving it as a string.
Chronos::date($date)->addDays()->getDateTime();
Chronos::date($date)->addMinutes()->getDateTime();
Chronos::date($date)->addSeconds()->getDateTime();
Chronos::date($date)->subDays()->getDateTime();
Chronos::date($date)->subMinutes()->getDateTime();
Chronos::date($date)->subSeconds()->getDateTime();
You can also chain the methods fluently.
Chronos::date($date)->addDays(40)->addMinutes(1)->subSeconds(20)->getDateTime();
You can set another datetime as a DateTime object or a valid date string or a timestamp to work with intervals.
Chronos::date()->travel(new DateTime)...
Chronos::date()->travel('2022-05-05 10:10:10')...
Chronos::date()->travel(1664524279)...
You have multiple methods to retrieve the difference as a string.
Chronos::date()->travel('2022-05-05 10:10:10')
->daysPassed() // This will return 0 if travel date is in the future.
->differenceInDays() // This will return negative days if travel is in the past.
->hoursPassed()
->differenceInHours()
->minutesPassed()
->differenceInMinutes()
->secondsPassed()
->differenceInSeconds()
You can also do a fast check to see weather we are in the past or future.
Chronos::date()->travel('2022-05-05 10:10:10')
->isInFuture()
->isInPast()