TimeHelper
-
class TimeHelper(View $view, array $settings = array())
Le Helper Time vous permet, comme il l’indique de gagner du temps. Il permet
le traitement rapide des informations se rapportant au temps. Le Helper
Time a deux tâches principales qu’il peut accomplir:
Il peut formater les chaînes de temps.
Il peut tester le temps (mais ne peut pas le courber, désolé).
Modifié dans la version 2.1: TimeHelper
a été reconstruit dans la classe CakeTime
pour faciliter l’utilisation en-dehors de la couche View
.
Dans une vue, ces méthodes sont accessibles via la classe TimeHelper
et vous pouvez l’appeler comme vous appelleriez une méthode normale
de helper:
$this->Time->method($args);
.
Utiliser le Helper
Une utilisation courante de Time Helper est de compenser la date et le time
pour correspondre au time zone de l’utilisateur. Utilisons un exemple de forum.
Votre forum a plusieurs utilisateurs qui peuvent poster des messages depuis
n’importe quelle partie du monde. Une façon facile de gérer le temps est de
sauvegarder toutes les dates et les times à GMT+0 or UTC. Décommenter la
ligne date_default_timezone_set('UTC');
dans app/Config/core.php
pour
s’assurer que le time zone de votre aplication est défini à GMT+0.
Ensuite, ajoutez un time zone à votre table users et faîtes les modifications
nécessaires pour permettre à vos utilisateurs de définir leur time zone.
Maintenant que nous connaissons le time zone de l’utilisateur connecté, nous
pouvons corriger la date et le temps de nos posts en utilisant le Helper Time:
echo $this->Time->format(
'F jS, Y h:i A',
$post['Post']['created'],
null,
$user['User']['time_zone']
);
// Affichera August 22nd, 2011 11:53 PM pour un utilisateur dans GMT+0
// August 22nd, 2011 03:53 PM pour un utilisateur dans GMT-8
// et August 23rd, 2011 09:53 AM GMT+10
La plupart des méthodes du Helper Time contiennent un paramètre $timezone.
Le paramètre $timezone accepte une chaîne identifiante de timezone valide ou
une instance de la classe DateTimeZone.
Tester Time
-
TimeHelper::isToday($dateString, $timezone = NULL)
-
TimeHelper::isThisWeek($dateString, $timezone = NULL)
-
TimeHelper::isThisMonth($dateString, $timezone = NULL)
-
TimeHelper::isThisYear($dateString, $timezone = NULL)
-
TimeHelper::wasYesterday($dateString, $timezone = NULL)
-
TimeHelper::isTomorrow($dateString, $timezone = NULL)
-
TimeHelper::isFuture($dateString, $timezone = NULL)
Nouveau dans la version 2.4.
-
TimeHelper::isPast($dateString, $timezone = NULL)
Nouveau dans la version 2.4.
-
TimeHelper::wasWithinLast($timeInterval, $dateString, $timezone = NULL)
Modifié dans la version 2.2: Le paramètre $timezone
remplace le paramètre $userOffset
utilisé
dans 2.1 et suivants.
Nouveau dans la version 2.2: Le paramètre $dateString
accepte aussi maintenant un objet DateTime.
Toutes les fonctions ci-dessus retourneront true ou false quand une chaîne
de date est passé. wasWithinLast
prend une option supplémentaire
$time_interval
:
// Appelé avec TimeHelper
$this->Time->wasWithinLast($time_interval, $dateString);
// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
CakeTime::wasWithinLast($time_interval, $dateString);
wasWithinLast
prend un intervalle de time qui est une chaîne au format
« 3 months » et accepte un intervalle de time en secondes, minutes, heures,
jours, semaines, mois et années (pluriels ou non). Si un intervalle de time
n’est pas reconnu (par exemple, si il y a une faute de frappe) ensuite
ce sera par défaut à days.