2012-06-13 15 views
5

Poszukuję niezawodnego sposobu zwrócenia pełnej daty określonego dnia tygodnia (np. "Mon") dla bieżącego bieżącego tygodnia.Obliczanie dat względnych w php przy użyciu polecenia strtotime()

Od dzisiaj jest środa, 13 czerwca 2012, spodziewałem <?php echo date("Y-m-d", strtotime('Mon this week')); ?> spowodować 2012-06-11, ale zamiast php powraca 2012-06-18 jakby interpretuje tym tygodniu jako sens przyszłym tygodniu. Dlaczego to zachowanie i co powinienem robić?

Dzięki.

--Jeff

+3

Jak definiujesz "w tym tygodniu"? W poniedziałek w niedzielę? Od niedzieli do soboty? Od soboty do piątku? Lub coś zupełnie innego? –

+0

interesujące. Po prostu uruchomiłem go pod PHP5.4 i otrzymałem 11 miejsce w "Mon w tym tygodniu" i 18 w "Mon". Jakiej wersji PHP używasz? – dnagirl

+0

php wersja 5.2 – jalperin

Odpowiedz

5

date('Y-m-d', strtotime('last Monday', strtotime('Sunday')));

To wyszukuje poniedziałku poprzedniego do następnej niedzieli.

0

myślę, że to jest rozwiązanie dla swojego problemu:

$monday_date = date("Y-m-d", mktime(0,0,0, date("m"), date("j")-(date("w")+1), date("Y"))); 
2

Zgodnie z dokumentacją php relative date formats.

Następnie Monday this week najpierw przejdzie do next Monday, a następnie przetworzy względny tekst this week.

nazwa dnia: Przechodzi do następnego dnia o tej nazwie, chyba że jest to bieżący dzień, a następnie nie zostanie przesunięty. Innymi słowy, jeśli bieżąca data byłaby 11 czerwca, to strtotime('Monday this week') powróciłby 11 czerwca, natomiast jeśli bieżąca data to 13 czerwca, to strtotime('Monday this week') wróci 19 czerwca.

Powiązane problemy