假设我得到了以下代码:
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 位年份的输入,而是返回当前日期的时间戳......
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');
原因很简单 您需要在以下语句中取小"y":
echo "12.07.16 - ".date("d.m.Y", strtotime("12.07.16"));
自
echo "12.07.16 - ".date("d.m.y", strtotime("12.07.16"));
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"));
您正在使用用于 YYYY 甲酸的"Y"。
你应该试试这个代码
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
正确的方式书写,它接受 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"));