假设我得到了这段代码:
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位数年份的输入,而是返回当前日期的时间戳...
答案 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"));