0

バグとして検証するために、誰かが彼の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

私はそれをphp5.2とPHP5.3でテストしましたが、同じ結果になりました。

「解決策」として、これを行うための最良の代替方法は何ですか?

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

2 に答える 2

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;
于 2013-02-01T12:51:23.560 に答える
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');
于 2013-02-01T12:51:40.987 に答える