Nesmukie laiki

Šodien mani kaunināja, ka es nesmuki datumus rakstot. Ka “02.06.2005. 07:21:22” patiesībā cilvēkam neko neizsaka. Cita lieta, ja paziņotu vienkārši “vakar” – tas jau daudz labāk izklausoties. Taisnība jau arī ir – cilvēks nav dators, cilvēkam BIOS-ā nav iešūts kalendārs.

Tāpēc funkcija, kas UNIX timestampam atgriež elementāros vārdiskos aprakstus. Tā sacīt, izkrāso pati, ja gribi citādi:

function TextInfo($spTime){
    $todayMidNight = mktime(0, 0, 0, date("m"), date("d"), date("y"));
    $yesterdayMidNight = $todayMidNight - 24*60*60;


    $nowTime = mktime();        //brīdis, pret kuru rēķinās
    $now = getdate($nowTime); //aprēķina brīža dati sadalīti pa "detaļām"

    //timestamp pagājušās svētdienas beigām
    $sundayEveningSpan = ((($now["wday"]+6)%7)*24*60*60); 

    $then = getdate($spTime); //laiks, pret kuru rēķinās sadalīts pa "detaļām"

    //vai sakrīt ar šodienu
    if ( ($now["mday"]==$then["mday"]) && 
        ($now["mon"]==$then["mon"]) && 
        ($now["year"]==$then["year"])) {
    if ($then["hours"] < 6) return "šonakt"; //noticis šajā naktī
    if ($then["hours"] < 10) return "šorīt"; //noticis rīta pusē
    return "šodien";  //citādi vienkārši informējam, ka šodien 
    }

    //ir noticis vakardien
    if ( ($todayMidNight > $spTime) && ($spTime >= $yesterdayMidNight)) {
    if ( abs( $now["hours"] - $then["hours"] ) < 3) return "vakar ap šo laiku";  //ja stundas līdzīgas pašreizējām
    if ($then["hours"] < 6) return "vakar naktī"; //noticis vakar no rīta agri
    if ($then["hours"] < 10) return "vakar no rīta"; 
    if ($then["hours"] < 12) return "vakar priekšpusdienā"; 
    return "vakar";
    }

    //ir noticis šonedēļ
    if (( $todayMidNight > $spTime) &&  ($todayMidNight- $sundayEveningSpan < $spTime )) {
    return "šonedēļ";
    }

    //ir noticis pagājušajā nedēļā
    if (( $todayMidNight- $sundayEveningSpan > $spTime) && 
        ( $todayMidNight- $sundayEveningSpan - 24*60*60*7 &lt; $spTime )) {
    return "pagājušajā nedēļā";
    }

    //ja senāk par pagājušo nedēļu, vai nav senāk par gadu?
    $tSpan = $nowTime - $spTime;
    if (floor($tspan /(24*60*60*365) )>0) return " pirms vairāk nekā gada";

    //aizmirstam īsos un garos mēnešus
    $tSpanMonths = floor( $tSpan / (24*60*60*30) );     
    if ($tSpanMonths &gt; 0) {
    //starp 1 un 2 mēnešiem
    if ($tSpanMonths == 1) {
        $days = floor(($tSpan-24*60*60*30)/(24*60*60));
        if ( ($days!=1) && ($days!=21) && ($days!=31)) 
        return "pirms mēneša un ".$days." dienām";
                            Else
        return "pirms mēneša un ".$days." dienas";
        }
    return "pirms vairāk nekā ".$tSpanMonths." mēnešiem";
    } else {
    //jāskatās, vai bija tas pats mēnesis, vai iepriekšējais
    if ($then["mon"]==$now["mon"]) return "šajā mēnesī"; else return "pagājušajā mēnesī";
    }
}

Parametros Unix timestamps.

3 thoughts on “Nesmukie laiki”

  1. Mjā – man gan liekas, kur nu vēl skaistāk un loģiskāk?! Nesmuki… Bet 2005-10-16 22:23:10 loģiskuma ziņā pārsist nevar.

Comments are closed.