# DateTime クラス

(PHP 5 >= 5.2.0, PHP 7)

## はじめに

日付と時刻をあらわします。

## クラス概要

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

## 定義済み定数

`DateTime::ATOM`
`DATE_ATOM`
  Atom (例: 2005-08-15T15:52:01+00:00)
`DateTime::COOKIE`
`DATE_COOKIE`
  HTTP Cookies (例: Monday, 15-Aug-2005 15:52:01 UTC)
`DateTime::ISO8601`
`DATE_ISO8601`
  ISO-8601 (例: 2005-08-15T15:52:01+0000)

  > 注意: この書式は ISO-8601 との互換性がありませんが、敢えてそのまま残しています。 下位互換性を保つためです。ISO-8601 互換の書式を使いたい場合は、 `DateTime::ATOM` あるいは `DATE_ATOM` を使いましょう。

`DateTime::RFC822`
`DATE_RFC822`
  RFC 822 (例: Mon, 15 Aug 05 15:52:01 +0000)
`DateTime::RFC850`
`DATE_RFC850`
  RFC 850 (例: Monday, 15-Aug-05 15:52:01 UTC)
`DateTime::RFC1036`
`DATE_RFC1036`
  RFC 1036 (例: Mon, 15 Aug 05 15:52:01 +0000)
`DateTime::RFC1123`
`DATE_RFC1123`
  RFC 1123 (例: 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`
  `DATE_ATOM` と同じ (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 (例: 2005-08-15T15:52:01+00:00)

## 変更履歴

バージョン | 説明
--- | ---
5.5.0 | DateTimeInterface を実装するようになりました。
5.4.24 | COOKIE 定数が、RFC 1036 に準拠するように (年を4桁で表すように) なりました。 以前のバージョンでは、RFC 850 に従って年を2桁で表していました。
5.2.2 | DateTime オブジェクトどうしの 比較演算子 による比較が、期待通りに動作するようになりました。 これより前のバージョンでは、すべての DateTime オブジェクトは (== による比較で) 等しいと見なされていました。

## 目次

- DateTime::add — 年月日時分秒の値を DateTime オブジェクトに加える
- DateTime::__construct — 新しい DateTime オブジェクトを返す
- DateTime::createFromFormat — 指定した書式で時刻文字列をパースする
- DateTime::getLastErrors — 警告およびエラーを返す
- DateTime::modify — タイムスタンプを変更する
- DateTime::__set_state — __set_state ハンドラ
- DateTime::setDate — 日付を設定する
- DateTime::setISODate — ISO 日付を設定する
- DateTime::setTime — 時刻を設定する
- DateTime::setTimestamp — Unix タイムスタンプを用いて日付と時刻を設定する
- DateTime::setTimezone — DateTime オブジェクトのタイムゾーンを設定する
- DateTime::sub — 年月日時分秒の値を DateTime オブジェクトから引く