timestamp problem br 2

Započeo Marko Аcović, 15.01.2009, 12:39

prethodna tema - sledeća tema

Marko Аcović

Kako u php-u proveriti da li se dva timestampa nalaze u okviru istog sata?

Marko Аcović

Opet ja sebi odgovaram prvi. :) Nadjoh nesto ovako:


$startDate = getDate($timestamp1);
$currDate = getDate($timestamp2);
                       
if ((abs($timestamp1- $timestamp2) < 60 * 60) && ($startDate['hours'] == $currDate['hours']))
{
    // do stuff
}


Mislim da je ova provera dovoljna.

holodoc

Da to bi bio prilično dobar način da se izvrši provera da li se dva timestampa nalaze u okviru jednog te istog sata.

Elem pošto vidim da se u poslednje vreme jako zanimaš za datume preporučio bih ti da pored manuala za date i mktime funckije proučiš i funkciju strtotime :) Iako krajnje nepodesna za starije PHP verzije (recimo da je potpuno upotrebljiva tek negde od 5.0.2 mada bih ja rekao 5.1.0) može mnogo da ti olakša kada tražiš timestampove za recimo "prošlu nedelju" ili "10. septembar 2024.". Za ovaj drugi slučaj ti je mnogo bolje da koristiš sigurniju mktime a u prvom slučaju bi ti najobičnije korišćenje recimo seldećeg reda:
<?php
echo strtotime("last Sunday");
?>

dalo tačan timestamp prethodne nedelje :D Jako korisna funkcija ako se primeni na pravi način. Možeš recimo da uradiš i sledeću stvar:
<?php
echo strtotime("+1 year +8 months +3 week 1 days 7 hours 1 seconds");
?>

i da dobiješ tačan timestamp za taj pomeraj koji vidiš u stringu :D

Jedna bitna stvar... Ako koristiš ovu funkciju jako je bitno da pravilno postaviš vremensku zonu. Nju postavljaš ili direktno u php.ini-ju ili koristiš date_default_timezone_get direktivu (http://www.php.net/manual/en/function.date-default-timezone-get.php) da bi postavio defaultnu zonu.
Takođe ako više voliš OOp pristup preporučio bih ti da baciš malo oko i na Date klasu (http://www.php.net/manual/en/class.datetime.php) gde možeš da nađeš korisne stvarčice kao što su Date::diff i slično. PEAR isto tako ima solidnu klasu koja omogućava razne mahinacije sa pomeranjem datuma, izračunavanjem prvih datuma u mesecu, raznih timestampova itd. Preporučio bih ti da pogledaš ta već gotova rešenja jer su proverena rešenja ipak pogodnija od novih eksperimenata s obzirom da su stara i već proverena rešenja preležala dečje bolesti koje su iskorenjivane dugo :)
<?php
abstract class Ignorance extends Stupidity implements Unavoidable 
    private function 
__construct(){
        
parent::__destruct();
    }; 

// EOF -> life.php