CakeTime

class CakeTime

Si vous avez besoin de fonctionnalités TimeHelper en-dehors d’une View, utilisez la classe CakeTime:

class UsersController extends AppController {

    public $components = array('Auth');

    public function afterLogin() {
        App::uses('CakeTime', 'Utility');
        if (CakeTime::isToday($this->Auth->user('date_of_birth']))) {
            // greet user with a happy birthday message
            $this->Session->setFlash(__('Happy birthday you...'));
        }
    }
}

Nouveau dans la version 2.1: CakeTime a été créé à partir de TimeHelper.

Formatage

CakeTime::convert($serverTime, $timezone = NULL)
Type retourné:integer

Convertit étant donné le time (dans le time zone du serveur) vers le time de l’utilisateur, étant donné son/sa sortie de GMT.

// appel via TimeHelper
echo $this->Time->convert(time(), 'Asia/Jakarta');
// 1321038036

// appel avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::convert(time(), new DateTimeZone('Asia/Jakarta'));

Modifié dans la version 2.2: Le paramètre $timezone remplace le paramètre $userOffset utilisé dans 2.1 et suivants.

CakeTime::convertSpecifiers($format, $time = NULL)
Type retourné:string

Convertit une chaîne de caractères représentant le format pour la fonction strftime et retourne un format Windows safe et i18n aware.

CakeTime::dayAsSql($dateString, $field_name, $timezone = NULL)
Type retourné:string

Crée une chaîne de caractères dans le même format que dayAsSql mais nécessite seulement un unique objet date:

// Appelé avec TimeHelper
echo $this->Time->dayAsSql('Aug 22, 2011', 'modified');
// (modified >= '2011-08-22 00:00:00') AND
// (modified <= '2011-08-22 23:59:59')

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::dayAsSql('Aug 22, 2011', 'modified');

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.

CakeTime::daysAsSql($begin, $end, $fieldName, $userOffset = NULL)
Type retourné:string

Retourne une chaîne de caractères dans le format « ($field_name >= “2008-01-21 00:00:00”) AND ($field_name <= “2008-01-25 23:59:59”) ». C’est pratique si vous avez besoin de chercher des enregistrements entre deux dates incluses:

// Appelé avec TimeHelper
echo $this->Time->daysAsSql('Aug 22, 2011', 'Aug 25, 2011', 'created');
// (created >= '2011-08-22 00:00:00') AND
// (created <= '2011-08-25 23:59:59')

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::daysAsSql('Aug 22, 2011', 'Aug 25, 2011', 'created');

Modifié dans la version 2.2: Le paramètre $timezone remplace $userOffset utilisé dans 2.1 et suivants.

Nouveau dans la version 2.2: Le paramètre $dateString accepte aussi maintenant un objet DateTime.

CakeTime::format($date, $format = NULL, $default = false, $timezone = NULL)
Type retourné:string

Va retourner une chaîne formatée avec le format donné en utilisant les options de formatage de la fonction PHP strftime():

// appel via TimeHelper
echo $this->Time->format('2011-08-22 11:53:00', '%B %e, %Y %H:%M %p');
// August 22nd, 2011 11:53 AM

echo $this->Time->format('%r', '+2 days');
// 2 days from now formatted as Sun, 13 Nov 2011 03:36:10 AM EET

// appel avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::format('2011-08-22 11:53:00', '%B %e, %Y %H:%M %p');
echo CakeTime::format('+2 days', '%c');

Vous pouvez aussi fournir la date/time en premier argument. En faisant cela vous devrez utiliser le format strftime compatible. Cette signature d’appel vous permet de tirer parti du format de date de la locale ce qui n’est pas possible en utilisant le format de date() compatible:

// appel avec TimeHelper
echo $this->Time->format('2012-01-13', '%d-%m-%Y', 'invalid');

// appel avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::format('2011-08-22', '%d-%m-%Y');

Modifié dans la version 2.2: Les paramètres $format et $date sont en ordre opposé par rapport à ce qui se faisait dans 2.1 et suivants. Le paramètre $timezone remplace le paramètre $userOffset utilisé dans 2.1 et suivants. Le paramètre $default remplace le paramètre $invalid utilisé dans 2.1 et suivants.

Nouveau dans la version 2.2: Le paramètre $date accepte aussi maintenant un objet DateTime.

CakeTime::fromString($dateString, $timezone = NULL)
Type retourné:string

Prend une chaîne et utilise strtotime pour la convertir en une date integer:

// Appelé avec TimeHelper
echo $this->Time->fromString('Aug 22, 2011');
// 1313971200

echo $this->Time->fromString('+1 days');
// 1321074066 (+1 day from current date)

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::fromString('Aug 22, 2011');
echo CakeTime::fromString('+1 days');

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.

CakeTime::gmt($dateString = NULL)
Type retourné:integer

Va retourner la date en un nombre défini sur Greenwich Mean Time (GMT).

// Appelé avec TimeHelper
echo $this->Time->gmt('Aug 22, 2011');
// 1313971200

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::gmt('Aug 22, 2011');
CakeTime::i18nFormat($date, $format = NULL, $invalid = false, $timezone = NULL)
Type retourné:string

Retourne une chaîne de date formatée, étant donné soit un timestamp UNIX soit une chaîne de date valide strtotime(). Il prend en compte le format de la date par défaut pour le langage courant si un fichier LC_TIME est utilisé. Pour plus d’infos sur le fichier LC_TIME, allez voir ici

Modifié dans la version 2.2: Le paramètre $timezone remplace le paramètre $userOffset utilisé dans 2.1 et suivants.

CakeTime::nice($dateString = NULL, $timezone = NULL, $format = null)
Type retourné:string

Prend une chaîne de date et la sort au format « Tue, Jan 1st 2008, 19:25 » ou avec le param optionnel $format:

// Appelé avec TimeHelper
echo $this->Time->nice('2011-08-22 11:53:00');
// Mon, Aug 22nd 2011, 11:53

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::nice('2011-08-22 11:53:00');
CakeTime::niceShort($dateString = NULL, $timezone = NULL)
Type retourné:string

Prend une chaîne de date et la sort au format « Jan 1st 2008, 19:25 ». Si l’objet date est today, le format sera « Today, 19:25 ». Si l’objet date est yesterday, le format sera « Yesterday, 19:25 »:

// Appelé avec TimeHelper
echo $this->Time->niceShort('2011-08-22 11:53:00');
// Aug 22nd, 11:53

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::niceShort('2011-08-22 11:53:00');

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.

CakeTime::serverOffset()
Type retourné:integer

Retourne la valeur du serveur à partir du GMT dans les secondes.

CakeTime::timeAgoInWords($dateString, $options = array())
Type retourné:string

Prendra une chaîne datetime (tout ce qui est parsable par la fonction strtotime() de PHP ou le format de datetime de MySQL) et la convertit en un format de texte comme, « 3 weeks, 3 days ago »:

// Appelé avec TimeHelper
echo $this->Time->timeAgoInWords('Aug 22, 2011');
// on 22/8/11

// on August 22nd, 2011
echo $this->Time->timeAgoInWords(
    'Aug 22, 2011',
    array('format' => 'F jS, Y')
);

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::timeAgoInWords('Aug 22, 2011');
echo CakeTime::timeAgoInWords(
    'Aug 22, 2011',
    array('format' => 'F jS, Y')
);

Utilisez l’option “end” pour déterminer le point de cutoff pour ne plus utiliser de mots; par défaut à “+1 month”:

// Appelé avec TimeHelper
echo $this->Time->timeAgoInWords(
    'Aug 22, 2011',
    array('format' => 'F jS, Y', 'end' => '+1 year')
);
// On Nov 10th, 2011 it would display: 2 months, 2 weeks, 6 days ago

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::timeAgoInWords(
    'Aug 22, 2011',
    array('format' => 'F jS, Y', 'end' => '+1 year')
);

Utilisez l’option “accuracy” pour déterminer la précision de la sortie. Vous pouvez utiliser ceci pour limiter la sortie:

// Si $timestamp est il y a 1 month, 1 week, 5 days et 6 hours
echo CakeTime::timeAgoInWords($timestamp, array(
    'accuracy' => array('month' => 'month'),
    'end' => '1 year'
));
// Sort '1 month ago'

Modifié dans la version 2.2: L’option accuracy a été ajoutée.

Nouveau dans la version 2.2: Le paramètre $dateString accepte aussi maintenant un objet DateTime.

CakeTime::toAtom($dateString, $timezone = NULL)
Type retourné:string

Va retourner une chaîne de date au format Atom « 2008-01-12T00:00:00Z »

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.

CakeTime::toQuarter($dateString, $range = false)
Type retourné:mixed

Va retourner 1, 2, 3 ou 4 dépendant du quart de l’année sur lequel la date tombe. Si range est défini à true, un tableau à deux éléments va être retourné avec les dates de début et de fin au format « 2008-03-31 »:

// Appelé avec TimeHelper
echo $this->Time->toQuarter('Aug 22, 2011');
// Afficherait 3

$arr = $this->Time->toQuarter('Aug 22, 2011', true);
/*
Array
(
    [0] => 2011-07-01
    [1] => 2011-09-30
)
*/

// Appelé avec CakeTime
App::uses('CakeTime', 'Utility');
echo CakeTime::toQuarter('Aug 22, 2011');
$arr = CakeTime::toQuarter('Aug 22, 2011', true);

Nouveau dans la version 2.2: Le paramètre $dateString accepte aussi maintenant un objet DateTime.

Nouveau dans la version 2.4: Les nouveaux paramètres d’option relativeString (par défaut à %s ago) et absoluteString (par défaut à on %s) pour permettre la personnalisation de la chaîne de sortie résultante sont maintenant disponibles.

CakeTime::toRSS($dateString, $timezone = NULL)
Type retourné:string

Va retourner une chaîne de date au format RSS « Sat, 12 Jan 2008 00:00:00 -0500 »

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.

CakeTime::toUnix($dateString, $timezone = NULL)
Type retourné:integer

Un enrouleur pour fromString.

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.

CakeTime::toServer($dateString, $timezone = NULL, $format = 'Y-m-d H:i:s')
Type retourné:mixed

Nouveau dans la version 2.2: Retourne une date formatée dans le timezone du serveur.

CakeTime::timezone($timezone = NULL)
Type retourné:DateTimeZone

Nouveau dans la version 2.2: Retourne un objet timezone à partir d’une chaîne de caractères ou de l’objet timezone de l’utilisateur. Si la fonction est appelée sans paramètres, elle essaie d’obtenir le timezone de la variable de configuration “Config.timezone”.

CakeTime::listTimezones($filter = null, $country = null, $options = array())
Type retourné:array

Nouveau dans la version 2.2: Retourne une liste des identificateurs de timezone.

Modifié dans la version 2.8: $options accepte maintenant un tableau avec les clés group, abbr, before, et after. Spécifier abbr => true va ajouter l’abréviation de la timezone dans le texte <option>.

Tester Time

CakeTime::isToday($dateString, $timezone = NULL)
CakeTime::isThisWeek($dateString, $timezone = NULL)
CakeTime::isThisMonth($dateString, $timezone = NULL)
CakeTime::isThisYear($dateString, $timezone = NULL)
CakeTime::wasYesterday($dateString, $timezone = NULL)
CakeTime::isTomorrow($dateString, $timezone = NULL)
CakeTime::isFuture($dateString, $timezone = NULL)

Nouveau dans la version 2.4.

CakeTime::isPast($dateString, $timezone = NULL)

Nouveau dans la version 2.4.

CakeTime::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.