Version 1.0.0 - 2006/01/31

4.5 Date et heure

Lorsque l’on cherche à développer un framework, le sujet de la représentation de la date mérite une attention particulière. L’écriture d’une date diffère selon les pays et les bases de données. La norme SQL92 à fixé le format « officiel » du timestamp. Mais pour la représentation en tant que variable, les logiciels divergent légèrement. Nous ne nous sommes donc pas permis d’utiliser directement les objets renvoyer par ces derniers, dans le risque de devoir gérer trop de cas particuliers. La solution retenu a été de définir nous même notre propre représentation du timestamp. Une classe conçue pour recadrer les divergences entre SGBD et s’adapté pour traiter toutes les opérations courantes sur les dates et les heures. La classe NoasTimestamp est très complète. Vous pouvez effectuer toutes les opérations plus et moins courantes. Comme nous démontre le listing suivant, il existe plusieurs façon d’obtenir une instance de NoasTimestamp. Vous pouvez ensuite leur ajouter des heures, des minutes, effectuer des comparaisons ou formater des chaînes de caractères. Vous pouvez également faire des testes pratiques comme déterminer s’il s’agit d’une date du jour.
Juste pour information, nous tenions à préciser que la classe NoasTimestamp utilise en interne une valeur entière qui est le timestamp UNIX.

Utilisation du timestamp

<?php

    $oNow = NoasTimestamp::getTimestamp();
    $oToday = NoasTimestamp::getToDay();
    $oTomorrow = NoasTimestamp::getTomorrow();
    $oYesterday = NoasTimestamp::getYesterday();
    $oNext = NoasTimestamp::getTimestamp();
    $oNext->addHours(2);
    $oNext->addMinutes(40);
    $oNext->addSeconds(12);
    $oNext->addDays(7);
    $oNext->addMonths(3);
    $oNext->addYears(1);
    $oBirthDay = NoasTimestamp::parse("1979-03-28 05:45:30");
    self::assertTrue("isTimestamp()", NoasTimestamp::isTimestamp($oBirthDay->getValueAsString()));
    self::assertTrue("compareToObject()",
                                     $oBirthDay->compareToObject($oNow) < 0);
    self::assertTrue("compareToObject()",
                                     $oNow->compareToObject($oBirthDay) > 0);
    self::assertTrue("isToDay()", $oNow->isToDay());
    $timeAsString = $oNow->format("H:i:s, l d F Y"));

?>

 

© 2005 Réoka Djohou, tous droits réservés.