为什么strtotime('2016-01-01')会导致1.1.2015?

时间:2016-04-28 13:16:29

标签: php strtotime

我的应用程序中有一个报告错误,我在DB返回的mysql日期使用了strtotime函数。这一切都运行良好,直到今天发生了一个错误。

当我跑步时:

date('j.n.o', strtotime('2016-01-01'))

由于某种原因,我得到了结果“1.1.2015”。

但如果我跑

date('j.n.o', strtotime('2016-02-01'))

我得到“1.2.2016”这是正确的,但我不知道为什么第一个例子失败了。

我可以轻松地做一个解决方法来使这项工作正常但我特别想知道为什么这个函数会通过这个输入返回如此奇怪的结果?我已经用php 5.3和7.0检查了,我得到了相同的结果

2 个答案:

答案 0 :(得分:4)

尝试使用Y代替o年份

echo date('j.n.Y', strtotime('2016-01-01'));

http://php.net/manual/en/function.date.php

  

o --- ISO-8601年号。它具有与Y相同的值,除了如果ISO周数(W)属于上一年或下一年,则使用该年代。 (在PHP 5.1.0中添加)

vs

  

Y ---一年的完整数字表示,4位

答案 1 :(得分:0)

试试这个:

PHP包含内置日期函数,用于格式化给定的日期或时间。这些是,

日期() DATE_FORMAT()

此函数接受两个可选参数。即格式和时间戳。该代码显示了PHP date()函数的一个示例。

/返回时间戳的日期,格式为dd / mm / YYYY 回音日期(“d-m-Y”,时间());