PHP:一个简单的字符串到日期对象转换失败

时间:2016-02-13 17:25:23

标签: php date-conversion

我想将我获取的字符串转换为日期对象,以便我可以添加/减去天数。我尝试了几种我在网上阅读的方法,但都失败了,我完全迷失了(这应该很简单!)。这是一个例子:

echo '11: '.substr($content, 0, 10).'<br/>';
$theDay = new datetime(substr($content, 0, 10));
echo '2: '.$theDay->format('yyyy-mm-dd').'<br/>';
$theDay->modify('+1 day');
echo '21: '.$theDay->format('yyyy-mm-dd').'<br/>';

我得到的输出是:

11: 2016-02-10
2: 16161616-0202-1010
21: 16161616-0202-1111

第一行显示日期结构正确,第二行看起来很奇怪!并且在添加1天之后,它看起来好像它确实添加了1天(11而不是10),但它又看起来很奇怪。我错过了什么?

1 个答案:

答案 0 :(得分:2)

您的格式字符串搞砸了:

echo '11: '.substr($content, 0, 10).'<br/>';
$exDay = new datetime(substr($content, 0, 10));
echo '2: '.$exDay->format('Y-m-d').'<br/>';
$exDay->modify('+1 day');
echo '21: '.$exDay->format('Y-m-d').'<br/>';

输出:

11: 2016-02-10
2: 2016-02-10
21: 2016-02-11

有关格式字符的完整列表,请参阅the manual。与此问题相关的是:

Y   A full numeric representation of a year, 4 digits
y   A two digit representation of a year
m   Numeric representation of a month, with leading zeros
d   Day of the month, 2 digits with leading zeros

也就是说,您不能为{4}年写yyyy,而是Y(同样适用于md)。