unixtojd
Introduction
Date and Time Related Extensions
PHP Manual

# Date and Time

Table of Contents

- Introduction
- Installing/Configuring
  - Requirements
  - Installation
  - Runtime Configuration
  - Resource Types
- Predefined Constants
- DateTime — The DateTime class
  - DateTime::add — Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  - DateTime::__construct — Returns new DateTime object
  - DateTime::createFromFormat — Returns new DateTime object formatted according to the specified format
  - DateTime::getLastErrors — Returns the warnings and errors
  - DateTime::modify — Alters the timestamp
  - DateTime::__set_state — The __set_state handler
  - DateTime::setDate — Sets the date
  - DateTime::setISODate — Sets the ISO date
  - DateTime::setTime — Sets the time
  - DateTime::setTimestamp — Sets the date and time based on an Unix timestamp
  - DateTime::setTimezone — Sets the time zone for the DateTime object
  - DateTime::sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
- DateTimeImmutable — The DateTimeImmutable class
  - DateTimeImmutable::add — Adds an amount of days, months, years, hours, minutes and seconds
  - DateTimeImmutable::__construct — Returns new DateTimeImmutable object
  - DateTimeImmutable::createFromFormat — Returns new DateTimeImmutable object formatted according to the specified format
  - DateTimeImmutable::getLastErrors — Returns the warnings and errors
  - DateTimeImmutable::modify — Alters the timestamp
  - DateTimeImmutable::__set_state — The __set_state handler
  - DateTimeImmutable::setDate — Sets the date
  - DateTimeImmutable::setISODate — Sets the ISO date
  - DateTimeImmutable::setTime — Sets the time
  - DateTimeImmutable::setTimestamp — Sets the date and time based on an Unix timestamp
  - DateTimeImmutable::setTimezone — Sets the time zone
  - DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds
- DateTimeInterface — The DateTimeInterface interface
  - DateTime::diff — Returns the difference between two DateTime objects
  - DateTime::format — Returns date formatted according to given format
  - DateTime::getOffset — Returns the timezone offset
  - DateTime::getTimestamp — Gets the Unix timestamp
  - DateTime::getTimezone — Return time zone relative to given DateTime
  - DateTime::__wakeup — The __wakeup handler
- DateTimeZone — The DateTimeZone class
  - DateTimeZone::__construct — Creates new DateTimeZone object
  - DateTimeZone::getLocation — Returns location information for a timezone
  - DateTimeZone::getName — Returns the name of the timezone
  - DateTimeZone::getOffset — Returns the timezone offset from GMT
  - DateTimeZone::getTransitions — Returns all transitions for the timezone
  - DateTimeZone::listAbbreviations — Returns associative array containing dst, offset and the timezone name
  - DateTimeZone::listIdentifiers — Returns a numerically indexed array containing all defined timezone identifiers
- DateInterval — The DateInterval class
  - DateInterval::__construct — Creates a new DateInterval object
  - DateInterval::createFromDateString — Sets up a DateInterval from the relative parts of the string
  - DateInterval::format — Formats the interval
- DatePeriod — The DatePeriod class
  - DatePeriod::__construct — Creates a new DatePeriod object
- Date/Time Functions
  - checkdate — Validate a Gregorian date
  - date_add — Alias of DateTime::add
  - date_create_from_format — Alias of DateTime::createFromFormat
  - date_create_immutable_from_format — Alias of DateTimeImmutable::createFromFormat
  - date_create_immutable — Alias of DateTimeImmutable::__construct
  - date_create — Alias of DateTime::__construct
  - date_date_set — Alias of DateTime::setDate
  - date_default_timezone_get — Gets the default timezone used by all date/time functions in a script
  - date_default_timezone_set — Sets the default timezone used by all date/time functions in a script
  - date_diff — Alias of DateTime::diff
  - date_format — Alias of DateTime::format
  - date_get_last_errors — Alias of DateTime::getLastErrors
  - date_interval_create_from_date_string — Alias of DateInterval::createFromDateString
  - date_interval_format — Alias of DateInterval::format
  - date_isodate_set — Alias of DateTime::setISODate
  - date_modify — Alias of DateTime::modify
  - date_offset_get — Alias of DateTime::getOffset
  - date_parse_from_format — Get info about given date formatted according to the specified format
  - date_parse — Returns associative array with detailed info about given date
  - date_sub — Alias of DateTime::sub
  - date_sun_info — Returns an array with information about sunset/sunrise and twilight begin/end
  - date_sunrise — Returns time of sunrise for a given day and location
  - date_sunset — Returns time of sunset for a given day and location
  - date_time_set — Alias of DateTime::setTime
  - date_timestamp_get — Alias of DateTime::getTimestamp
  - date_timestamp_set — Alias of DateTime::setTimestamp
  - date_timezone_get — Alias of DateTime::getTimezone
  - date_timezone_set — Alias of DateTime::setTimezone
  - date — Format a local time/date
  - getdate — Get date/time information
  - gettimeofday — Get current time
  - gmdate — Format a GMT/UTC date/time
  - gmmktime — Get Unix timestamp for a GMT date
  - gmstrftime — Format a GMT/UTC time/date according to locale settings
  - idate — Format a local time/date as integer
  - localtime — Get the local time
  - microtime — Return current Unix timestamp with microseconds
  - mktime — Get Unix timestamp for a date
  - strftime — Format a local time/date according to locale settings
  - strptime — Parse a time/date generated with strftime
  - strtotime — Parse about any English textual datetime description into a Unix timestamp
  - time — Return current Unix timestamp
  - timezone_abbreviations_list — Alias of DateTimeZone::listAbbreviations
  - timezone_identifiers_list — Alias of DateTimeZone::listIdentifiers
  - timezone_location_get — Alias of DateTimeZone::getLocation
  - timezone_name_from_abbr — Returns the timezone name from abbreviation
  - timezone_name_get — Alias of DateTimeZone::getName
  - timezone_offset_get — Alias of DateTimeZone::getOffset
  - timezone_open — Alias of DateTimeZone::__construct
  - timezone_transitions_get — Alias of DateTimeZone::getTransitions
  - timezone_version_get — Gets the version of the timezonedb
- Supported Date and Time Formats
  - Time Formats
  - Date Formats
  - Compound Formats
  - Relative Formats
- List of Supported Timezones
  - Africa
  - America
  - Antarctica
  - Arctic
  - Asia
  - Atlantic
  - Australia
  - Europe
  - Indian
  - Pacific
  - Others

# The DateTime class

## Introduction

Representation of date and time.

## Class synopsis

DateTime
class DateTime implements DateTimeInterface {
/* Constants */
const string DateTime::ATOM = "Y-m-d\TH:i:sP" ;
const string DateTime::COOKIE = "l, d-M-y H:i:s T" ;
const string DateTime::ISO8601 = "Y-m-d\TH:i:sO" ;
const string DateTime::RFC822 = "D, d M y H:i:s O" ;
const string DateTime::RFC850 = "l, d-M-y H:i:s T" ;
const string DateTime::RFC1036 = "D, d M y H:i:s O" ;
const string DateTime::RFC1123 = "D, d M Y H:i:s O" ;
const string DateTime::RFC2822 = "D, d M Y H:i:s O" ;
const string DateTime::RFC3339 = "Y-m-d\TH:i:sP" ;
const string DateTime::RSS = "D, d M Y H:i:s O" ;
const string DateTime::W3C = "Y-m-d\TH:i:sP" ;
/* Methods */
public __construct ([ string `$time` = "now" [, DateTimeZone `$timezone` = `NULL` ]] )
public DateTime add ( DateInterval `$interval` )
public static DateTime createFromFormat ( string `$format` , string `$time` [, DateTimeZone `$timezone` ] )
public static array getLastErrors ( void )
public DateTime modify ( string `$modify` )
public static DateTime __set_state ( array `$array` )
public DateTime setDate ( int `$year` , int `$month` , int `$day` )
public DateTime setISODate ( int `$year` , int `$week` [, int `$day` = 1 ] )
public DateTime setTime ( int `$hour` , int `$minute` [, int `$second` = 0 ] )
public DateTime setTimestamp ( int `$unixtimestamp` )
public DateTime setTimezone ( DateTimeZone `$timezone` )
public DateTime sub ( DateInterval `$interval` )
public DateInterval diff ( DateTimeInterface `$datetime2` [, bool `$absolute` = false ] )
public string format ( string `$format` )
public int getOffset ( void )
public int getTimestamp ( void )
public DateTimeZone getTimezone ( void )
public __wakeup ( void )
}

## Predefined Constants

`DateTime::ATOM`
`DATE_ATOM`
  Atom (example: 2005-08-15T15:52:01+00:00)
`DateTime::COOKIE`
`DATE_COOKIE`
  HTTP Cookies (example: Monday, 15-Aug-05 15:52:01 UTC)
`DateTime::ISO8601`
`DATE_ISO8601`
  ISO-8601 (example: 2005-08-15T15:52:01+0000)
`DateTime::RFC822`
`DATE_RFC822`
  RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)
`DateTime::RFC850`
`DATE_RFC850`
  RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)
`DateTime::RFC1036`
`DATE_RFC1036`
  RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)
`DateTime::RFC1123`
`DATE_RFC1123`
  RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)
`DateTime::RFC2822`
`DATE_RFC2822`
  RFC 2822 (Mon, 15 Aug 2005 15:52:01 +0000)
`DateTime::RFC3339`
`DATE_RFC3339`
  Same as `DATE_ATOM` (since PHP 5.1.3)
`DateTime::RSS`
`DATE_RSS`
  RSS (Mon, 15 Aug 2005 15:52:01 +0000)
`DateTime::W3C`
`DATE_W3C`
  World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)

## Changelog

Version | Description
--- | ---
5.5.0 | The class now implements DateTimeInterface.
5.2.2 | DateTime object comparison with the comparison operators changed to work as expected. Previously, all DateTime objects were considered equal (using ==).

# The DateTimeImmutable class

## Introduction

This class behaves the same as DateTime except it never modifies itself but returns a new object instead.

## Class synopsis

DateTimeImmutable
class DateTimeImmutable implements DateTimeInterface {
/* Methods */
public __construct ([ string `$time` = "now" [, DateTimeZone `$timezone` = `NULL` ]] )
public DateTimeImmutable add ( DateInterval `$interval` )
public static DateTimeImmutable createFromFormat ( string `$format` , string `$time` [, DateTimeZone `$timezone` ] )
public static array getLastErrors ( void )
public DateTimeImmutable modify ( string `$modify` )
public static DateTimeImmutable __set_state ( array `$array` )
public DateTimeImmutable setDate ( int `$year` , int `$month` , int `$day` )
public DateTimeImmutable setISODate ( int `$year` , int `$week` [, int `$day` = 1 ] )
public DateTimeImmutable setTime ( int `$hour` , int `$minute` [, int `$second` = 0 ] )
public DateTimeImmutable setTimestamp ( int `$unixtimestamp` )
public DateTimeImmutable setTimezone ( DateTimeZone `$timezone` )
public DateTimeImmutable sub ( DateInterval `$interval` )
public DateInterval diff ( DateTimeInterface `$datetime2` [, bool `$absolute` = false ] )
public string format ( string `$format` )
public int getOffset ( void )
public int getTimestamp ( void )
public DateTimeZone getTimezone ( void )
public __wakeup ( void )
}

# The DateTimeInterface interface

## Introduction

## Class synopsis

DateTimeInterface
class DateTimeInterface {
/* Methods */
public DateInterval diff ( DateTimeInterface `$datetime2` [, bool `$absolute` = false ] )
public string format ( string `$format` )
public int getOffset ( void )
public int getTimestamp ( void )
public DateTimeZone getTimezone ( void )
public __wakeup ( void )
}

# The DateTimeZone class

## Introduction

Representation of time zone.

## Class synopsis

DateTimeZone
class DateTimeZone {
/* Constants */
const integer DateTimeZone::AFRICA = 1 ;
const integer DateTimeZone::AMERICA = 2 ;
const integer DateTimeZone::ANTARCTICA = 4 ;
const integer DateTimeZone::ARCTIC = 8 ;
const integer DateTimeZone::ASIA = 16 ;
const integer DateTimeZone::ATLANTIC = 32 ;
const integer DateTimeZone::AUSTRALIA = 64 ;
const integer DateTimeZone::EUROPE = 128 ;
const integer DateTimeZone::INDIAN = 256 ;
const integer DateTimeZone::PACIFIC = 512 ;
const integer DateTimeZone::UTC = 1024 ;
const integer DateTimeZone::ALL = 2047 ;
const integer DateTimeZone::ALL_WITH_BC = 4095 ;
const integer DateTimeZone::PER_COUNTRY = 4096 ;
/* Methods */
public __construct ( string `$timezone` )
public array getLocation ( void )
public string getName ( void )
public int getOffset ( DateTime `$datetime` )
public array getTransitions ([ int `$timestamp_begin` [, int `$timestamp_end` ]] )
public static array listAbbreviations ( void )
public static array listIdentifiers ([ int `$what` = DateTimeZone::ALL [, string `$country` = `NULL` ]] )
}

## Predefined Constants

`DateTimeZone::AFRICA`

  Africa time zones.

`DateTimeZone::AMERICA`

  America time zones.

`DateTimeZone::ANTARCTICA`

  Antarctica time zones.

`DateTimeZone::ARCTIC`

  Arctic time zones.

`DateTimeZone::ASIA`

  Asia time zones.

`DateTimeZone::ATLANTIC`

  Atlantic time zones.

`DateTimeZone::AUSTRALIA`

  Australia time zones.

`DateTimeZone::EUROPE`

  Europe time zones.

`DateTimeZone::INDIAN`

  Indian time zones.

`DateTimeZone::PACIFIC`

  Pacific time zones.

`DateTimeZone::UTC`

  UTC time zones.

`DateTimeZone::ALL`

  All time zones.

`DateTimeZone::ALL_WITH_BC`

  All time zones including backwards compatible.

`DateTimeZone::PER_COUNTRY`

  Time zones per country.

# The DateInterval class

## Introduction

Represents a date interval.

A date interval stores either a fixed amount of time (in years, months, days, hours etc) or a relative time string in the format that DateTime's constructor supports.

## Class synopsis

DateInterval
class DateInterval {
/* Properties */
public integer $y ;
public integer $m ;
public integer $d ;
public integer $h ;
public integer $i ;
public integer $s ;
public integer $invert ;
public mixed $days ;
/* Methods */
public __construct ( string `$interval_spec` )
public static DateInterval createFromDateString ( string `$time` )
public string format ( string `$format` )
}

## Properties

y

  Number of years.

m

  Number of months.

d

  Number of days.

h

  Number of hours.

i

  Number of minutes.

s

  Number of seconds.

invert

  Is 1 if the interval represents a negative time period and 0 otherwise. See DateInterval::format.

days

  If the DateInterval object was created by DateTime::diff, then this is the total number of days between the start and end dates. Otherwise, days will be `FALSE`.

  Before PHP 5.4.20/5.5.4 instead of `FALSE` you will receive -99999 upon accessing the property.

# The DatePeriod class

## Introduction

Represents a date period.

A date period allows iteration over a set of dates and times, recurring at regular intervals, over a given period.

## Class synopsis

DatePeriod
class DatePeriod implements Traversable {
/* Constants */
const integer DatePeriod::EXCLUDE_START_DATE = 1 ;
/* Methods */
public __construct ( DateTime `$start` , DateInterval `$interval` , int `$recurrences` [, int `$options` ] )
public __construct ( DateTime `$start` , DateInterval `$interval` , DateTime `$end` [, int `$options` ] )
public __construct ( string `$isostr` [, int `$options` ] )
}

## Predefined Constants

`DatePeriod::EXCLUDE_START_DATE`

  Exclude start date, used in DatePeriod::__construct.