Laboratorija za računarsku tehniku

Softverske teme => Web razvoj => Serverske aplikacije => Temu započeo: Marko Аcović 13.01.2009, 12:30

Naslov: problem sa timestamp-om
Poruka od: Marko Аcović 13.01.2009, 12:30
Imam jedan mali problem u php-u. Imam timestamp nekog dana u mesecu. Treba mi da na osnovu tog timestamp-a izracunam timestamp prvog dana u nedelji kao i timestamp prvog dana za taj mesec.
Ima li neko ideju kako? :)
Naslov: Одг: problem sa timestamp-om
Poruka od: Marko Аcović 13.01.2009, 13:59
Timestamp za prvi dan u nedelji sam nasao kako: echo strtotime('monday', $timestamp);
Ovo drugo jos nisam nasao kako. Pretpostavljam da ide slicno kao i za prvi dan u nedelji :)
Naslov: Одг: problem sa timestamp-om
Poruka od: Marko Аcović 13.01.2009, 14:07
Evo odgovora i za drugo pitanje: http://www.phpro.org/examples/First-Day-Of-Month.html (http://www.phpro.org/examples/First-Day-Of-Month.html)
Nisam jos probao. Trebalo bi da radi :)
Naslov: Одг: problem sa timestamp-om
Poruka od: holodoc 13.01.2009, 14:31
U suštini sve što ti je potrebno oko manipulacije datuma možeš da ostvariš putem date i mktime funkcija i malkice logike :)

Timestamp prvog dana u nedelji za zadati timestamp ćeš najbolje izračunati tako što ćeš iskoristiti dati timestamp da pronađeš koji dan u nedelji je u pitanju. To možeš da uradiš sa date funkcijom na sledeći način:
<?php
/*
* Trenutni dan u nedelji. Vraca broj od 0 - nedelja do 6 - subota
*/
$currentDayOfWeek date("w"$timestamp);

/*
* Sad treba samo da od trenutnog timestampa oduzmes sekunde za broj dana do nultog dana tj. nedelje ili ako hoces ponedeljka (tada oduzmi jedan dan u formuli)
*/
$firstDayOfTheWeekTS $timestamp $currentDayOfWeek  86400;
?>

$firstDayOfTheWeekTS ti daje timestamp prvog dana u nedelji. Sa ovim pristupom mogu da se jave i određeni problemi zbog čega je ponekad mnogo korisnije da računaš timestamp u odnosu na podne svakog dana (eliminišeš gomilu problema sa vremenskim zonama i sl.) Ako ti baš bude zatrebalo mogu i njega ovde da objasnim ali zahteva malo dubljen objašnjenje kako radi mktime.

Prvi dan u mesecu nalaziš na sledeći način:
$firstWeekDayOfMonth = date("w", mktime(0, 0, 0, $currMonth, 1, $currYear));
Ovo $currMonth i $currYear su trenutni mesec i godina a njih možeš na nekoliko načina da dobiješ (iz timestampa iz nekog Date objekat itd. tako da to ostavljam tebi da se igraš :))
Naslov: Одг: problem sa timestamp-om
Poruka od: holodoc 13.01.2009, 14:34
Blah... Bio si brži da odgovoriš samom sebi ali kada budem našao vremena postovaću ovde kompletan projekat za onak kalendar Pravoslavne crkve koji sam radio da bi ste videli kako to sve može jako lepo da se odradi putem gotovih klasa koje sam pisao.
Naslov: Одг: problem sa timestamp-om
Poruka od: Marko Аcović 15.01.2009, 16:01
Funkcija za iznalazenje $firstDayOfTheWeekTS ima probleme sa nedeljom. Malo sam je prepravio. Mislim da bi sad trebalo da radi.

private function firstDayOfWeekTS($timestamp)
    {
        // 0 - sunday, 1 - monday, ... 5 - friday, 6 - saturday
        $currentDayOfWeek = date("w", $timestamp);
        switch ($currentDayOfWeek) {
            case 0: // sunday
                   $firstDayOfTheWeekTS = $timestamp - 86400 * 6;
                   break;
            default: // all other days
                  $firstDayOfTheWeekTS = $timestamp - ($currentDayOfWeek - 1) * 86400;
        }
        return $firstDayOfTheWeekTS;
    }