Datetime Class
getTimestamp
Section titled “getTimestamp”getTimeStemp is a unix representation of a datetime object.
$date = new DateTime();echo $date->getTimestamp();this will out put an integer indication the seconds that have elapsed since 00:00:00 UTC, Thursday, 1 January 1970.
setDate
Section titled “setDate”setDate sets the date in a DateTime object.
$date = new DateTime();$date->setDate(2016, 7, 25);this example sets the date to be the twenty-fifth of July, 2015, it will produce the following result:
2016-07-25 17:52:15.819442Add or Subtract Date Intervals
Section titled “Add or Subtract Date Intervals”We can use the class DateInterval to add or subtract some interval in a DateTime object.
See the example below, where we are adding an interval of 7 days and printing a message on the screen:
$now = new DateTime();// empty argument returns the current date$interval = new DateInterval('P7D');//this objet represents a 7 days interval$lastDay = $now->add($interval); //this will return a DateTime object$formatedLastDay = $lastDay->format('Y-m-d');//this method format the DateTime object and returns a Stringecho "Samara says: Seven Days. You'll be happy on $formatedLastDay.";This will output (running on Aug 1st, 2016):
Samara says: Seven Days. You’ll be happy on 2016-08-08.
We can use the sub method in a similar way to subtract dates
$now->sub($interval);echo "Samara says: Seven Days. You were happy last on $formatedLastDay.";This will output (running on Aug 1st, 2016):
Samara says: Seven Days. You were happy last on 2016-07-25.
Create DateTime from custom format
Section titled “Create DateTime from custom format”PHP is able to parse a number of date formats. If you want to parse a non-standard format, or if you want your code to explicitly state the format to be used, then you can use the static DateTime::createFromFormat method:
Object oriented style
$format = "Y,m,d";$time = "2009,2,26";$date = DateTime::createFromFormat($format, $time);Procedural style
$format = "Y,m,d";$time = "2009,2,26";$date = date_create_from_format($format, $time);Printing DateTimes
Section titled “Printing DateTimes”PHP 4+ supplies a method, format that converts a DateTime object into a string with a desired format. According to PHP Manual, this is the object oriented function:
public string DateTime::format ( string $format )The function date() takes one parameters - a format, which is a string
Format
Section titled “Format”The format is a string, and uses single characters to define the format:
- Y: four digit representation of the year (eg: 2016)
- y: two digit representation of the year (eg: 16)
- m: month, as a number (01 to 12)
- M: month, as three letters (Jan, Feb, Mar, etc)
- j: day of the month, with no leading zeroes (1 to 31)
- D: day of the week, as three letters (Mon, Tue, Wed, etc)
- h: hour (12-hour format) (01 to 12)
- H: hour (24-hour format) (00 to 23)
- A: either AM or PM
- i: minute, with leading zeroes (00 to 59)
- s: second, with leading zeroes (00 to 59)
- The complete list can be found here
These characters can be used in various combinations to display times in virtually any format. Here are some examples:
$date = new DateTime('2000-05-26T13:30:20'); /* Friday, May 26, 2000 at 1:30:20 PM */
$date->format("H:i");/* Returns 13:30 */
$date->format("H i s");/* Returns 13 30 20 */
$date->format("h:i:s A");/* Returns 01:30:20 PM */
$date->format("j/m/Y");/* Returns 26/05/2000 */
$date->format("D, M j 'y - h:i A");/* Returns Fri, May 26 '00 - 01:30 PM */Procedural
Section titled “Procedural”The procedural format is similar:
Object-Oriented
Section titled “Object-Oriented”$date->format($format)Procedural Equivalent
Section titled “Procedural Equivalent”date_format($date, $format)Create Immutable version of DateTime from Mutable prior PHP 5.6
Section titled “Create Immutable version of DateTime from Mutable prior PHP 5.6”To create \DateTimeImmutable in PHP 5.6+ use:
\DateTimeImmutable::createFromMutable($concrete);Prior PHP 5.6 you can use:
\DateTimeImmutable::createFromFormat(\DateTime::ISO8601, $mutable->format(\DateTime::ISO8601), $mutable->getTimezone());