na overenie ako chyba, môže to niekto otestovať pomocou svojho php:
$timeZone = new DateTimeZone("Europe/Berlin");
$startDate = new DateTime("first day this month 00:00:00", $timeZone);
echo $startDate->format("d.m.Y");
výsledok:
02.02.2013
Testoval som to s php 5.2 a PHP 5.3, s rovnakým výsledkom ....
Ako „riešenie“, aký je najlepší alternatívny spôsob, ako to urobiť?
$timeZone = new DateTimeZone("Europe/Berlin");
$startDateAlt = new DateTime("now", $timeZone);
$startDateAlt->setTimestamp(mktime(0, 0, 0, date("m") , 1, date("Y")));
odpovede:
0 pre odpoveď č. 1Vynechali ste of
, takže ho analyzuje ako niečo iné:
$timeZone = new DateTimeZone("Europe/Berlin");
$startDate = new DateTime("first day of this month 00:00:00", $timeZone);
echo $startDate->format("d.m.Y");
výnos
01.02.2013
Pokiaľ to z nejakého dôvodu nefunguje (stará php verzia sa zdá z vášho komentára), môžete vyskúšať toto? Trochu hack možno ...
$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");
0 pre odpoveď č. 2
Myslím, že chýbaš z v first day this month
, skúste:
$timeZone = new DateTimeZone("Europe/Berlin");
$startDate = new DateTime("first day of this month 00:00:00", $timeZone);
echo $startDate->format("r") . PHP_EOL;