PHP - strtotime()和日期时间奇怪的行为

时间:2017-04-04 12:14:46

标签: php mysql string datetime strtotime

我有一些格式为字符串的日期格式为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设置中寻找一些设置?

1 个答案:

答案 0 :(得分:2)

大写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