Manipuler les dates comme un boss avec ICanBoogie/DateTime

Le paquet DateTime du framework ICanBoogie étend les capacités des classes DateTime et DateTimeZone de PHP. Les classes qui composent le paquet facilitent le travail avec les dates et les heures, les fuseaux horaires ainsi que les emplacements des fuseaux horaires.

De nombreuses propriétés magiques permettent d'obtenir le jour, le mois, l'année, le fuseau horaire de l'instance… mais aussi de les manipuler. Le formatage des dates et des heures est facilité par de nombreux raccourcis. Des propriétés magiques permettent également de vérifier simplement certaines conditions . Toutes les instances peuvent être utilisées comme des chaînes de caractères. Enfin, le paquet est continuellement testé par Travis CI et peut-être installé par Composer.

Build Status

Quelques exemples

Disons que nous sommes le « 2013-02-03 21:03:45 » à Paris:

<?php

use ICanBoogie\DateTime;

date_default_timezone_set('EST')// set local time zone to Eastern Standard Time

$time = new DateTime('now''Europe/Paris');

echo $time;                             // 2013-02-03T21:03:45+0100
echo $time->utc;                        // 2013-02-03T20:03:45Z
echo $time->local;                      // 2013-02-03T15:03:45-0500
echo $time->utc->local;                 // 2013-02-03T15:03:45-0500
echo $time->utc->is_utc;                // true
echo $time->utc->is_local;              // false
echo $time->local->is_utc;              // false
echo $time->local->is_local;            // true
echo $time->is_dst;                     // false

echo $time->as_rss;                     // Sun, 03 Feb 2013 21:03:45 +0100
echo $time->as_db;                      // 2013-02-03 21:03:45

echo $time->as_time;                    // 21:03:45
echo $time->utc->as_time;               // 20:03:45
echo $time->local->as_time;             // 15:03:45
echo $time->utc->local->as_time;        // 15:03:45

echo $time->quarter;                    // 1
echo $time->week;                       // 5
echo $time->day;                        // 3
echo $time->minute;                     // 3
echo $time->is_monday;                  // false
echo $time->is_saturday;                // true
echo $time->is_today;                   // true
echo $time->tomorrow;                   // 2013-02-04T00:00:00+0100
echo $time->tomorrow->is_future         // true
echo $time->yesterday;                  // 2013-02-02T00:00:00+0100
echo $time->yesterday->is_past          // true
echo $time->monday;                     // 2013-01-28T00:00:00+0100
echo $time->sunday;                     // 2013-02-03T00:00:00+0100

echo $time->timestamp;                  // 1359921825
echo $time;                             // 2013-02-03T21:03:45+0100
$time->timestamp += 3600 * 4;
echo $time;                             // 2013-02-04T01:03:45+0100

echo $time->zone;                       // Europe/Paris
echo $time->zone->offset;               // 3600
echo $time->zone->location;             // FR,48.86667,2.33333
echo $time->zone->location->latitude;   // 48.86667
$time->zone = 'Asia/Tokyo';
echo $time;                             // 2013-02-04T09:03:45+0900

$time->hour += 72;
echo "Rendez-vous in 72 hours: $time";  // Rendez-vous in 72 hours: 2013-02-07T05:03:45+0900

Dates vides

Afin de faciliter le travail avec MySQL, les dates vides comme 0000-00-00 00:00:00 sont supportées.

<?php

$time = new DateTime('0000-00-00''utc');
// or
$time = DateTime::none();
echo $time;                             // -0001-11-30T00:00:00Z
echo $time->is_empty;                   // true
echo $time->as_date;                    // 0000-00-00
echo $time->as_db;                      // 0000-00-00 00:00:00

Pour en savoir plus, notamment découvrir les classes qui constituent ce paquet, merci de consulter son README.

Laisser un commentaire

Pas de commentaire