itaeng

Helper per la formattazione delle date con Cakephp

Gestire le date con cakephp non è mai stata una cosa semplice, senza parlare poi della situazione in cui si utilizza un hosting oltreoceano... 

Un piccolo helper potrebbe venirci in aiuto:

 

<?php
// ./app/views/helpers/date.php 
    /** 
     * Formattazione date e ore con Cakephp
     * 
     * @author ToX - http://emanuele.itoscano.com - toss82 - at - gmail.com 
     * 
     * 
     * 
     * @installazione: 
     *        Nella funzione daymonthyear e monthdayyear ricordati di cambiare la lingua di setlocale con ciò che ti serve (default: it_IT)
     *          
     */ 

Class DateHelper extends AppHelper{

    function nicedate($date)
    {
        if(empty($date)) {
            return "No date provided";
        }
       
        $singular         = array("secondo", "minuto", "ora", "giorno", "settimana", "mese", "anno", "decade");
        $plural           = array("secondi", "minuti", "ore", "giorni", "settimane", "mesi", "anni", "decadi");
        $lengths          = array("60","60","24","7","4.35","12","10");
       
        $now             = time();
        $unix_date         = strtotime($date);
       
           // check validity of date
        if(empty($unix_date)) {   
            return "N/A";
        }

        // is it future date or past date
        if($now > $unix_date) {   
            $difference     = $now - $unix_date;
            $tense         = "fa";
           
        } else {
            $difference     = $unix_date - $now;
            $tense         = "fra";
        }
       
        for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
            $difference /= $lengths[$j];
        }
       
        $difference = round($difference);
       
        if($difference != 1) {
            $periods[$j] = $plural[$j];
        } else {
            $periods[$j] = $singular[$j];
        }
       
        if ($now > $unix_date) {
            return "$difference $periods[$j] {$tense}";
        } else {
            return "{$tense} $difference $periods[$j]";
        }
    }

    function daymonthyear($date)
    {
        if(empty($date)) {
            return "No date provided";
        }
       
        $unix_date         = strtotime($date);
        setlocale(LC_TIME, 'it_IT'); 
        $data = strftime("%d/%m/%Y - %H:%M", $unix_date); 
        return ($data);
    }

    function monthdayyear($date)
    {
        if(empty($date)) {
            return "No date provided";
        }

        $unix_date         = strtotime($date);
        setlocale(LC_TIME, 'it_IT'); 
        $data = strftime("%m/%d/%Y - %H:%M", $unix_date); 
        return ($data);
    }
}
?>

Diciamo al nostro controller (o app_controller) di utilizzare il nuovo helper, e poi siamo pronti ad utilizzarlo:

$date->nicedate($post['Post']['created']);

oppure

$date->daymonthyear($post['Post']['created']);