DateTime错误的结果(潜在的错误?)

时间:2013-02-01 12:44:04

标签: php datetime

作为错误进行验证,有人可以用他的php测试这个:

$timeZone = new DateTimeZone('Europe/Berlin');
$startDate = new DateTime('first day this month 00:00:00', $timeZone);
echo $startDate->format('d.m.Y');

结果:

02.02.2013

我用php 5.2和PHP 5.3进行了测试,结果相同......

作为“决议”,最好的替代方法是什么?

$timeZone = new DateTimeZone('Europe/Berlin');
$startDateAlt = new DateTime('now', $timeZone);
$startDateAlt->setTimestamp(mktime(0, 0, 0, date("m") , 1, date("Y")));

2 个答案:

答案 0 :(得分:0)

我认为你错过了first day this month中的 。尝试:

$timeZone = new DateTimeZone('Europe/Berlin');
$startDate = new DateTime('first day of this month 00:00:00', $timeZone);
echo $startDate->format('r') . PHP_EOL;

答案 1 :(得分:0)

您省略了of,因此它将其解析为其他内容:

$timeZone = new DateTimeZone('Europe/Berlin');
$startDate = new DateTime('first day of this month 00:00:00', $timeZone);
echo $startDate->format('d.m.Y');

返回

01.02.2013

如果由于某种原因这不起作用(从您的评论中看起来是旧的PHP版本),您可以尝试这个吗?一点点黑客也许......

$startDate = new DateTime();
$days = $startDate->format('d');
$days = $days - 1;
$startDate->modify("-{$day} days");
$startDate->setTime(0,0,0);
echo $startDate->format('d.m.Y');