PHP - strtotime() 和 datetime 奇怪的行为
PHP - strtotime() and datetime strange behavior
我有一些日期格式为以下格式的字符串:18-04-17
。
我想将它们转换为日期。
起初我用strtotime()把它改成日期:
$timestamp = strtotime($row['reqEndDate']);
$newdate = date("d-m-Y", $timestamp);
echo $newdate;
这输出:17-04-2018
。如您所见,它把日期误认为是年份。
接下来我尝试使用datetime,如下:
$newdate = datetime::createFromFormat("d-m-Y", $row['reqEndDate']);
echo $newdate->format('d-m-Y');
此输出:18-04-0017
。此方法正确获取日期,但它打印的不是 2017 年,而是 0017。
这种行为有什么原因吗?也许我的 php 设置中的某些设置要查找?
大写 Y
将产生 4 位数的年份。小写 y
产生两位数的年份。您的 DateTime 代码应该是:
$date = DateTime::createFromFormat('d-m-y', $row['reqEndDate']);
echo $date->format('d-m-Y');
You can read about supported formats in PHP's manual page about date.
我有一些日期格式为以下格式的字符串:18-04-17
。
我想将它们转换为日期。
起初我用strtotime()把它改成日期:
$timestamp = strtotime($row['reqEndDate']);
$newdate = date("d-m-Y", $timestamp);
echo $newdate;
这输出:17-04-2018
。如您所见,它把日期误认为是年份。
接下来我尝试使用datetime,如下:
$newdate = datetime::createFromFormat("d-m-Y", $row['reqEndDate']);
echo $newdate->format('d-m-Y');
此输出:18-04-0017
。此方法正确获取日期,但它打印的不是 2017 年,而是 0017。
这种行为有什么原因吗?也许我的 php 设置中的某些设置要查找?
大写 Y
将产生 4 位数的年份。小写 y
产生两位数的年份。您的 DateTime 代码应该是:
$date = DateTime::createFromFormat('d-m-y', $row['reqEndDate']);
echo $date->format('d-m-Y');
You can read about supported formats in PHP's manual page about date.