DateTime::createFromFormat
date_create_from_format
(PHP 5 >= 5.3.0, PHP 7)
DateTime::createFromFormat -- date_create_from_format — 指定した書式で時刻文字列をパースする
説明
オブジェクト指向型
public static DateTime::createFromFormat
( string $format
, string $datetime
[, DateTimeZone $timezone
] ) : DateTime|false
手続き型
date_create_from_format
( string $format
, string $datetime
[, DateTimeZone $timezone
] ) : DateTime|false
新しい DateTime オブジェクトを返します。
このオブジェクトは、datetime
で指定した文字列を
format
で指定した書式に沿って解釈した時刻を表します。
パラメータ
format
書式を文字列で渡します。以下の書式オプションを参照ください。 大半は、date() で使える文字と同じです。
format
パラメータに渡せる文字format
文字説明 取りうる値の例 日 --- --- d
およびj
2桁の日付。先頭のゼロを含むものと含まないもの 01
から31
あるいは1
から31
D
およびl
曜日を表す文字列 Mon
からSun
あるいはSunday
からSaturday
S
日付の後につける英語の接尾辞。二文字。処理中には無視されます。 st
、nd
、rd
あるいはth
z
年始からの通算日数 (最初は 0) 0
から365
月 --- --- F
およびM
月を表す文字列。January あるいは Sept など January
からDecember
あるいはJan
からDec
m
およびn
月を表す数値。先頭のゼロを含むものと含まないもの 01
から12
あるいは1
から12
年 --- --- Y
4 桁の数値で表した年 例: 1999
あるいは2003
y
2 桁の数値で表した年 (1970年から2069年の間だとみなされます) 例: 99
あるいは03
(それぞれ、1999
および2003
と見なされます)時刻 --- --- a
およびA
午前および午後 am
あるいはpm
g
およびh
12 時間制での時間。先頭のゼロを含むものと含まないもの 1
から12
あるいは01
から12
G
andH
24 時間制での時間。先頭のゼロを含むものと含まないもの 0
から23
あるいは00
から23
i
分。先頭のゼロを含む 00
から59
s
秒。先頭のゼロを含む 00
から59
v
ミリ秒。(最大 3桁) 例: 12
,345
u
マイクロ秒 (最大 6 桁) 例: 45
,654321
タイムゾーン --- --- e
、O
、P
およびT
タイムゾーン識別子、UTC からの時差 (時間単位)、 UTC からの時差 (コロン区切りでの時間と分)、そしてタイムゾーンの短縮形
例: UTC
、GMT
、Atlantic/Azores
、+0200
、+02:00
、EST
、MDT
完全な日付/時刻 --- --- U
Unix エポック (January 1 1970 00:00:00 GMT) からの経過秒数 例: 1292177455
空白および区切り --- --- 空白 1 文字あるいはタブ 1 文字 例: #
次の区切り文字のいずれか: ;
,:
,/
,.
,,
,-
,(
,)
例: /
;
,:
,/
,.
,,
,-
,(
,)
指定した文字 例: -
?
ランダムなバイト 例: ^
(UTF-8 文字の場合は複数の?
が必要になるでしょう。この場合、おそらく*
を使うと要望が満たせるはずです)*
次の区切り文字あるいは数字までのランダムなバイト列 例: Y-*-d
の中の*
は、文字列
2009-aWord-08
の中のaWord
にマッチします!
すべてのフィールド (年、月、日、時、分、秒、マイクロ秒およびタイムゾーン情報) を Unix エポックにリセットする
!
がなければ、すべてのフィールドは現在の日時に設定されます。|
まだパースされていないすべてのフィールド (年、月、日、時、分、秒、マイクロ秒およびタイムゾーン情報) を Unix エポックにリセットする
は、文字列をパースした結果から年月日を設定し 時分秒には 0 を設定します。
+
この文字があると、文字列のそれ以降のデータではエラーが発生せず、 かわりに警告を発生させる
それ以降のデータが存在したかどうかを調べるには DateTime::getLastErrors() を使います。
書式文字列の中に解釈不能な文字が含まれていると処理は失敗し、 返り値にはエラーメッセージが付加されます。エラーメッセージを調べるには DateTime::getLastErrors() を使います。
format
にリテラル文字を含めるには、 バックスラッシュ (\
) でエスケープする必要があります。format
に文字!
が含まれない場合は、作成した時刻値のうちformat
で指定されていない部分を 現在のシステム時刻で初期化します。format
に文字!
が含まれる場合は、作成した時刻値のうちformat
で指定されていない部分と!
の左側の部分を Unix エポックの対応する箇所の値で初期化します。Unix エポックは 1970-01-01 00:00:00 です。
datetime
時刻を表す文字列。
timezone
指定したいタイムゾーンを表す DateTimeZone オブジェクト。
timezone
を省略し、かつdatetime
にタイムゾーンが含まれない場合は、 現在のタイムゾーンを使います。注意:
datetime
パラメータが UNIX タイムスタンプ (例:946684800
) だったり、タイムゾーンを含んでいたり (例:2010-01-28T15:00:00+02:00
) する場合は、timezone
パラメータや現在のタイムゾーンは無視します。
返り値
新しい DateTime のインスタンス、失敗した場合に false
を返します。
変更履歴
バージョン | 説明 |
---|---|
7.3.0 | 書式文字列 v が追加されました。
|
例
例1 DateTime::createFromFormat() の例
オブジェクト指向型
<?php$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');echo $date->format('Y-m-d');?>
手続き型
<?php$date = date_create_from_format('j-M-Y', '15-Feb-2009');echo date_format($date, 'Y-m-d');?>
上の例の出力は以下となります。
2009-02-15
例2 DateTime::createFromFormat() の複雑な例
<?phpecho 'Current time: ' . date('Y-m-d H:i:s') . "\n";$format = 'Y-m-d';$date = DateTime::createFromFormat($format, '2009-02-15');echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";$format = 'Y-m-d H:i:s';$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";$format = 'Y-m-!d H:i:s';$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";$format = '!d';$date = DateTime::createFromFormat($format, '15');echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";?>
上の例の出力は、 たとえば以下のようになります。
Current time: 2010-04-23 10:29:35 Format: Y-m-d; 2009-02-15 10:29:35 Format: Y-m-d H:i:s; 2009-02-15 15:16:17 Format: Y-m-!d H:i:s; 1970-01-15 15:16:17 Format: !d; 1970-01-15 00:00:00
例3 リテラル文字を含む書式文字列
<?phpecho DateTime::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s');?>
上の例の出力は、 たとえば以下のようになります。
23:15:03
参考
- DateTime::__construct() - 新しい DateTime オブジェクトを返す
- DateTime::getLastErrors() - 警告およびエラーを返す
- checkdate() - グレゴリオ暦の日付/時刻の妥当性を確認します
- strptime() - strftime が生成した日付/時刻をパースする