Page 1 sur 1

Manipuler les dates comme un boss avec ICanBoogie/DateTime

Posté : 20 févr. 2013, 12:13
par olvlvl
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.

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
Pour en savoir plus, notamment découvrir les classes qui constituent ce paquet, merci de consulter son README.