International PHP Conference Berlin 2023

date_create

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

date_create新しい DateTime オブジェクトを作成する

説明

date_create(string $datetime = "now", ?DateTimeZone $timezone = null): DateTime|false

DateTime::__construct() の手続き型バージョンです。

DateTime のコンストラクタと異なり、 datetime に渡された文字列が不正な場合には、 例外をスローする代わりに false を返します。

パラメータ

DateTimeImmutable::__construct も参照ください。

戻り値

新しい DateTime クラスのインスタンスを返します。 手続き型 の場合は、失敗したときに false を返します。

参考

add a note

User Contributed Notes 1 note

up
0
A. Go
3 years ago
Notice php by default assume the give string as such format:
'-'    is    'y-m-d'
'/'    is    'm/d/y'

Unless the given string has Y or M,
that is year is written as full year '2019', or month is written as English shorthand 'Jan',
the default assumption will be applied, where the date might be incorrect.

The following code show a quick test: (true as of php 7.2)
$date = [
    '2019-1-3',
    '19-1-3',
    '3-1-2019',
    '3-Jan-19',
    '3-1-19', //php assume as y-m-d not d-m-y

    '2019-3-1',
    '19-3-1',
    '1-3-2019',
    '1-3-19',

    '2019/3/1',
    '19/3/1', //fail, php think is month 19
    '1/3/2019', //php think is m/d/y
    '1/3/19'
];

//Y-M-d
foreach($date as $i => $d){
    echo $i ."\r\n";
    var_dump(date_format(date_create($d), 'Y-M-d'));
    echo "\r\n";
}
To Top