date_create

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

date_createcreate a new DateTime object

说明

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

This is the procedural version of DateTime::__construct().

Unlike the DateTime constructor, it will return false instead of an exception if the passed in datetime string is invalid.

返回值

Returns a new DateTime instance. 过程化风格在失败时返回 false

参见

add a note

User Contributed Notes 1 note

up
4
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