strtotime()返回DD.MM.YY输入的当前日期 - 为什么?

时间:2016-02-01 10:51:37

标签: php date time format strtotime

假设我得到了这段代码:

echo "12.07.2016 - ".date("d.m.Y", strtotime("12.07.2016"));
echo "12.07.16 - ".date("d.m.Y", strtotime("12.07.16"));

返回:

12.07.2016 - 12.07.2016
12.07.16 - 01.02.2016

第一个日期格式正确,第二行返回当前日期 - 为什么会发生这种情况? strtotime()无法以两位数格式处理多年?

编辑:为了澄清,我仍然希望date()推出4位数的年份。看来strtotime()似乎不接受2位数年份的输入,而是返回当前日期的时间戳...

5 个答案:

答案 0 :(得分:1)

简单的原因是你需要采取小的" y"在以下声明中:

echo "12.07.16 - ".date("d.m.Y", strtotime("12.07.16"));

TO

echo "12.07.16 - ".date("d.m.y", strtotime("12.07.16"));

答案 1 :(得分:1)

  

string date ( string $format [, int $timestamp = time() ] )

     

时间戳: - 可选的timestamp参数是整数 Unix时间戳,默认为当前本地时间(如果是时间戳)是   没有给。

     

换句话说,它默认为time()的值。

所以在你的情况下,在行echo "12.07.16 - ".date("d.m.Y", strtotime("12.07.16"));

您想要放置的格式是 12.07.2016 ,但是您放弃了 12.07.16 ,因此它取消了默认本地日期

  

你可以这样做格式化

$datetime = DateTime::createFromFormat('d.m.y', '12.07.16');
echo $datetime->format('d.m.Y');

答案 2 :(得分:0)

y以2位数字返回小年份,因此您的代码可以是:

echo "12.07.2016 - ".date("d.m.Y", strtotime("12.07.2016"));
echo "12.07.16 - ".date("d.m.y", strtotime("12.07.16"));

答案 3 :(得分:0)

您正在使用" Y"用于YYYY甲酸盐。

你应该试试这段代码

echo "12.07.2016 - ".date("d.m.y", strtotime("12.07.2016"));// for YY format
echo "12.07.16 - ".date("d.m.Y", strtotime("12.07.16")); // for YYYY formate
echo $a = date("d-m-Y H:i:s",time()); // for current time stamp

输出:

12.07.2016 - 12.07.16
12.07.16 - 01.02.2016
01-02-2016 12:16:12

答案 4 :(得分:0)

如果以正确的方式书写,则接受2位数年份。

示例:

echo $one = "12.07.2016 - ".date("d.m.Y", strtotime("12.07.2016"));
echo "</br>";
echo $two = "12.07.16 - ".date("d.m.Y", strtotime("16-07-12"));