problem sa timestamp-om

Započeo Marko Аcović, 13.01.2009, 12:30

prethodna tema - sledeća tema

Marko Аcović

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? :)

Marko Аcović

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 :)

Marko Аcović

Evo odgovora i za drugo pitanje: http://www.phpro.org/examples/First-Day-Of-Month.html
Nisam jos probao. Trebalo bi da radi :)

holodoc

13.01.2009, 14:31 #3 Poslednja Izmena: 13.01.2009, 14:33 od holodoc
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š :))
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

holodoc

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.
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php

Marko Аcović

15.01.2009, 16:01 #5 Poslednja Izmena: 15.01.2009, 16:07 od marko_gm
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;
    }