web-dev-qa-db-fra.com

Qu'est-ce qu'un horodatage Unix et pourquoi l'utiliser?

Qu'est-ce qu'un horodatage Unix? En PHP, lorsque vous travaillez avec des dates, la fonction strtotime() génère une valeur entière - qu'est-ce que c'est? J'ai essayé d'en savoir plus, mais je n'ai pas pu obtenir de réponse satisfaisante, en particulier pourquoi devons-nous convertir les dates à l'aide de strtotime().

27
user3073602

Qu'est-ce qu'un horodatage Unix

Autrement dit, l'horodatage Unix est un moyen de suivre le temps en tant que total de secondes. Ce décompte commence à l'époque Unix le 1er janvier 1970 à UTC. Par conséquent, l'horodatage Unix est simplement le nombre de secondes entre une date particulière et l'époque Unix . Il convient également de souligner que ce point dans le temps ne change pas techniquement, peu importe où vous vous trouvez sur le globe. Ceci est très utile aux systèmes informatiques pour le suivi et le tri des informations datées dans des applications dynamiques et distribuées en ligne et côté client. La raison pour laquelle les horodatages Unix sont utilisés par de nombreux webmasters est qu'ils peuvent représenter tous les fuseaux horaires à la fois. Pour plus d'informations, lisez le article Wikipedia .

Qu'est-ce que strtotime() et comment est-il utile

Comme son nom l'indique, la fonction strtotime() est utilisée pour convertir une chaîne de date en horodatage Unix (str to time).

Depuis la documentation manuelle PHP pour strtotime() :

strtotime - Analyse toute description textuelle datetime anglaise dans un horodatage Unix

Par exemple, supposons que vous vouliez obtenir l'horodatage Unix pour la date 25 December 2013, Alors vous utiliseriez strtotime() comme ceci:

echo strtotime("25 December 2013"), "\n";       // => 1387909800

strtotime() peut également gérer les formats d'heure et de date relatifs. Par exemple, tenez compte des éléments suivants:

echo strtotime("+1 month"), "\n";               // => 1390980039
echo strtotime("last day of next month"), "\n"; // => 1391152839

Ce sont quelques exemples de base. strtotime() peut également gérer des formats de date très complexes. Voir la documentation pour plus d'informations.

Quand dois-je utiliser un horodatage

Un horodatage Unix est interprété de la même manière quelle que soit la région et est calculé à partir du même point dans le temps, quel que soit le fuseau horaire. Si vous avez une application Web utilisée sur plusieurs fuseaux horaires et que vous avez besoin de la date/heure pour refléter les paramètres des utilisateurs individuels, utilisez un horodatage.

Dans le cas de strtotime(), il est principalement utilisé pour convertir entre les formats de date. Puisque strtotime() peut analyser presque n'importe quelle chaîne de date, il est utilisé pour convertir la chaîne de date en horodatage. Une fois que vous avez l'horodatage, vous pouvez le formater comme vous le souhaitez, en utilisant date() , ou des fonctions similaires.

Limitations de strtotime()

Sur un système 32 bits, la valeur maximale d'un entier est 2 147 483 647. L'heure la plus éloignée qui peut être représentée de cette manière est 03:14:07 UTC le mardi 19 janvier 2038. Ceci est également connu sous le nom de problème de l'année 2038 .

Voir cette note dans le manuel PHP :

La plage valide d'un horodatage est généralement du vendredi 13 décembre 1901 20:45:54 UTC au mar 19 janvier 2038 03:14:07 UTC. (Ce sont les dates qui correspondent aux valeurs minimale et maximale pour un entier signé 32 bits.) De plus, toutes les plates-formes ne prennent pas en charge les horodatages négatifs, par conséquent, votre plage de dates peut être limitée au plus tôt à l'époque Unix. Cela signifie que par ex. les dates antérieures au 1er janvier 1970 ne fonctionneront pas sur Windows, certaines distributions Linux et quelques autres systèmes d'exploitation. PHP 5.1.0 et les versions plus récentes surmontent cependant cette limitation.

Utiliser des objets DateTime

Si vous travaillez avec des dates en dehors de la plage de 13 Dec 1901 À 19 Jan 2038, Envisagez d'utiliser les objets DateTime de PHP qui peuvent fonctionner avec une plage de dates beaucoup plus large. DateTime peut représenter environ 293 milliards d'années dans les deux sens.

La classe DateTime est disponible sur PHP versions> = 5.2.0. Si vous exécutez une PHP version supérieure> = 5.2.0, vous devez utilisez DateTime lorsque vous travaillez avec des dates et des heures. C'est la meilleure solution. Si vous rencontrez déjà une ancienne version PHP, . Tout ce qui est antérieur à 5.3.0 est ancien.

  • Utilisez DateTime::__construct() ou DateTime::createFromFormat() pour créer un objet DateTime . Notez que DateTime::createFromFormat() n'est disponible que sur PHP> = 5.3. En utilisant cette méthode, vous pouvez analyser la date et l'heure de chaînes étranges qui autrement ne seraient pas possibles avec strtotime()
  • Utilisez la méthode DateTime::format() pour convertir votre objet DateTime dans n'importe quel format de date avec lequel vous souhaiterez travailler

Voici quelques bons articles sur DateTime:

Et un livre pour l'étagère:

51
Amal Murali