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']);