poniedziałek, 18 sierpnia 2008

mktime - w przyładach

Jak ugryźć funkcję php mktime?

W poniższych przykładach zmienna $time posiada postać.

$time = time();


Początek dnia
np.: 2008-08-18 00:00:00

$startDay = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time), date('Y',$time)));


Koniec dnia
np.: 2008-08-18 00:00:00

$endDay = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time)+1, date('Y',$time)));


Początek tygodnia
np.: 2008-08-18 00:00:00

$startWeek = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time), date('Y',$time)));


Koniec tygodnia
np.: 2008-08-25 00:00:00

$endWeek = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time)+1, date('Y',$time)));



Pierwszy dzień miesiąca
np.: 2008-08-01 00:00:00

$firstDayInMonth = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), 1, date('Y',$time)));


Ostatni dzień miesiąca
np.: 2008-08-29 00:00:00

$lastDayInMonth = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time)+1, -1, date('Y',$time)));


Gdzie zastosować?
System statystyk. Wyłowienie z bazy danych rekordów z danego dnia, tygodnia, miesiąca.

SELECT * FROM stats WHERE time BETWEEN '$startDay' AND '$endDay'


Jedno pytanie mnie nurtuje. Czy 00:00:00 tj. północ - jest traktowana jako początek czy koniec dnia? wydaje mi się ze to jest ostatnia godzina danego dnia.

2 komentarze:

Blogg pisze...

Wg mnie jest to początek dnia... przeciez masz 00:00:00 zalozmy ze to poniedzialek... wg TWojej teorii 00:00:01 bylby juz wtorkiem.

Takze 00:00:00 jest poczatkiem dnia

widmogrod pisze...

Jak najbardziej się z Tobą zgadzam :)