Maison >interface Web >tutoriel CSS >Recettes de date et d'heure PHP

Recettes de date et d'heure PHP

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-03-17 09:30:11583parcourir

Recettes de date et d'heure PHP

La gestion des dates et du temps est l'un des problèmes qui font des maux de tête des programmeurs. Dans le même temps, ils sont le fondement du développement de logiciels, des métadonnées et du tri des choses aux déclencheurs basés sur le temps, et un grand nombre d'applications entre les deux.

La date et l'heure sont également sujettes aux erreurs. Manipulation incorrecte, ils peuvent confondre les utilisateurs finaux et les collègues des programmeurs.

Voici un guide rapide sur la façon de gérer les dates et les heures du langage de programmation PHP. Il est conçu comme une référence pour vos besoins les plus courants tels que la mise en forme et le réglage des dattes. C'est simple, mais il est susceptible de couvrir 80% de vos besoins.

Table des matières

  • Obtenez la date et l'heure actuelles
  • Construire un objet DateTime pour une période spécifique
  • Fuseau horaire
  • Localisation
  • Voyage dans le temps
  • Date et heure qui se produit régulièrement
  • Combien de jours?
  • Étapes suivantes?

Cette étude a été soutenue par Frontend Masters, le partenaire d'apprentissage officiel de CSS-Tricks.

Besoin d'une formation en développement frontal?

Frontend Masters est le meilleur endroit pour apprendre. Ils offrent des cours sur toutes les technologies frontales les plus importantes. Vous souhaitez devenir un développeur complet? C'est votre meilleur choix:

Suivre le cours #### Obtenez la date et l'heure actuelles

Il convient de noter que les dates et le temps peuvent être représentés sous trois formes: horodatage (c'est-à-dire le temps de l'époque), objet DateTime et chaîne.

Premièrement, obtenez le code pour la date et l'heure actuelles:

  php $ maintenant = new DateTime ();
var_dump ($ maintenant);

// objet (datetime) # 1 (3) {
// ["date"] =?>
// String (26) "2021-10-13 22: 25: 11.790490"
// ["timezone_type"] =>
// int (3)
// ["fuseau horaire"] =>
// String (12) "Asie / Jakarta"
//}

Cela fournit un objet DateTime qui peut être utilisé pour créer des chaînes de date et de temps:

  php $ maintenant = new DateTime ();
Echo $ Now -?> Format ("YMD");
Echo $ Now-> Format ("YMD H: I: S A");

Vous pouvez comprendre intuitivement que Y représente l'année, M représente le mois, D représente la date du mois, etc. La liste complète des paramètres peut être trouvée dans le manuel PHP, mais je vais énumérer certains des paramètres les plus couramment utilisés ici pour référence.

L'objet DateTime peut être converti en horodatage:

  php $ maintenant = new DateTime ();
echo $ maintenant -?> gettimestamp ();

Mais nous pouvons également obtenir l'horodatage actuel sans construire l'objet DateTime:

  Php Echo Time (); // 1634139081
?>

Construire un objet DateTime pour une période spécifique

Et si nous voulons construire un objet DateTime pour une période spécifique (par exemple, 14 juillet 2011)? Nous pouvons passer la chaîne de date formatée au constructeur:

php $ date = new DateTime ("2011-07-14"); var_dump ($ date); // objet (datetime) # 1 (3) { // ["date"] =?> // String (26) "2011-07-14 00: 00: 00.000000" // ["timezone_type"] => // int (3) // ["fuseau horaire"] => // String (12) "Asie / Jakarta" //}

Le constructeur accepte également d'autres formats:

php $ date = new DateTime ("14-07-2011"); var_dump ($ date); // objet (datetime) # 1 (3) { // ["date"] =?> // String (26) "2011-07-14 00: 00: 00.000000" // ["timezone_type"] => // int (3) // ["fuseau horaire"] => // String (12) "Asie / Jakarta" //}

Mais soyez conscient de formats ambigus, tels que:

php $ date = new DateTime ("14/07/2011"); var_dump ($ date); // objet (datetime) # 1 (3) { // ["date"] =?> // String (26) "2011-07-14 00: 00: 00.000000" // ["timezone_type"] => // int (3) // ["fuseau horaire"] => // String (12) "Asie / Jakarta" //}

Vous pourriez penser que tout le monde devrait être familier avec le format de date aux États-Unis. Mais tout le monde ne le connaît pas, et il peut être interprété différemment. PostgreSQL ne fait pas exception.

Créer une table s'il n'existe pas publique.datetime_demo ( Date créée )); Insérer dans DateTime_demo (Created_At) VALEUR ('07 / 12/2011 '); Sélectionnez Created_at dans DateTime_demo; / * 2011-12-07 * /

Vous pourriez penser que cela reviendra le 12 juillet 2011, mais il revient le 7 décembre 2011. Une meilleure approche consiste à utiliser un format explicite:

php $ date = dateTime :: CreateFromFormat ('m / d / y', "10/08/21"); var_dump ($ date); // objet (datetime) # 2 (3) { // ["date"] =?> // String (26) "2021-10-08 16: 00: 47.000000" // ["timezone_type"] => // int (3) // ["fuseau horaire"] => // String (12) "Asie / Jakarta" //}

Et si nous voulons construire un objet DateTime à partir d'un horodatage?

php $ date = new DateTime (); $ date -?> Settimestamp (1634142890); var_dump ($ date); // objet (datetime) # 1 (3) { // ["date"] => // String (26) "2021-10-13 23: 34: 50.000000" // ["timezone_type"] => // int (3) // ["fuseau horaire"] => // String (12) "Asie / Jakarta" //}

Si nous voulons convertir l'objet horodat-time en une chaîne de date formatée, nous n'avons pas à créer un objet DateTime:

PHP Echo Date ("YMD H: I A", Time ());?>

Fuseau horaire

Nous pouvons créer un objet DateTime avec des informations de fuseau horaire, par exemple, si nous avons affaire à l'heure standard du Pacifique, à l'heure du jour de l'Est, etc.

Php $ Timezone = new DateTimeZone ("America / New_york"); $ date = new DateTime ("2021-10-13 05:00", $ Timezone); var_dump ($ date); // objet (datetime) # 1 (3) { // ["date"] =?> // String (26) "2021-10-13 05: 00: 00.000000" // ["timezone_type"] => // int (3) // ["fuseau horaire"] => // String (16) "America / New_york" //} // par exemple, heure de la lumière du jour de l'Est: New York $ Date = new DateTime ("2021-10-13 05:00 EDT"); var_dump ($ date); // objet (datetime) # 2 (3) { // ["date"] => // String (26) "2021-10-13 05: 00: 00.000000" // ["timezone_type"] => // int (2) // ["fuseau horaire"] => // String (3) "EDT" //} $ date = new DateTime ("2021-10-13 05:00 -04: 00"); var_dump ($ date); // objet (datetime) # 1 (3) { // ["date"] => // String (26) "2021-10-13 05: 00: 00.000000" // ["timezone_type"] => // int (1) // ["fuseau horaire"] => // String (6) "-04: 00" //}

Il existe trois façons de créer un objet DateTime contenant des informations de fuseau horaire. Timezone_type accepte différentes valeurs pour chaque méthode.

Mais que se passe-t-il si nous voulons convertir les dates et les temps affichés dans le fuseau horaire de New York pour s'afficher dans le fuseau horaire de Jakarta?

php $ newyorktimezone = new DateTimeZone ("America / new_york"); $ date = new DateTime ("2021-11-11 05:00", $ newyorktimezone); Echo $ Date -?> Format ("YMD H: I A"); $ jakartatimezone = new DateTimeZone ("Asia / Jakarta"); $ date-> setTimeZone ($ jakartatimezone); Echo $ Date-> Format ("YMD H: I A");

Lorsque New York est à 5 h 00, Jakarta est à 17 h 00 le même jour. Mais il y a un mois, Jakarta n'était que 11 heures plus vite que New York, comme indiqué ci-dessous:

php $ newyorktimezone = new DateTimeZone ("America / new_york"); $ date = new DateTime ("2021-10-11 05:00", $ newyorktimezone); Echo $ Date -?> Format ("YMD H: I A"); $ jakartatimezone = new DateTimeZone ("Asia / Jakarta"); $ date-> setTimeZone ($ jakartatimezone); Echo $ Date-> Format ("YMD H: I A");

PHP traite automatiquement l'heure d'été.

Localisation

Voici les moyens courants d'afficher les dates et les heures aux États-Unis:

php $ maintenant = new DateTime (); Echo $ maintenant -?> Format ("M / D / Y H: I A");

Mais quelqu'un en France peut préférer un format plus courant que sa région. Ils peuvent se plaindre: «C'est horrible.» Premièrement, personne sauf les États-Unis ne met le mois précédent. Deuxièmement, la France n'utilise pas AM ou PM - ils utilisent un système 24h / 24 comme l'armée (par exemple 14h00 au lieu de 14h00). C'est ce qui satisfait les habitants français.

php $ maintenant = new DateTime (); Echo $ maintenant -?> Format ("D / m / yh: i");

Mais cela nécessite une compréhension approfondie d'un pays ou d'une région en particulier. Au lieu de cela, nous pouvons localiser la date. Pour localiser la date, nous devons installer le support d'internationalisation pour PHP. Dans Ubuntu, nous pouvons effectuer cette étape:

$ sudo apt-get install php-intl

Pour afficher la date et l'heure en français, nous pouvons utiliser IntlDateFormatter:

$ locale = "fr_fr.utf-8"; $ formatter = new IntlDateFormatter ($ Locale, IntlDateFormatter :: Full, IntlDateFormatter :: Short, "Asie / Singapour"); $ date = new DateTime ("2020-10-10 00:00 UTC"); Echo $ format-> Format ($ Date);

Vous passez le lieu français comme le premier paramètre de la forme d'instlde.
Le deuxième paramètre est le format de la date. Le troisième paramètre est la forme du temps. Le fuseau horaire qui affiche la date et l'heure est dans le quatrième paramètre.

En plus d'IntlDateFormatter :: Full and IntlDateFormatter :: Short, d'autres formats couramment utilisés incluent IntlDateFormatter :: Aucun et IntlDateFormatter :: Long
et IntlDateFormatter :: Medium.

Si vous utilisez IntLdateFormatter :: Aucun pour le temps ou le troisième paramètre, vous n'incluez pas l'heure dans le format:

$ locale = "fr_fr.utf-8"; $ formatter = new IntlDateFormatter ($ local, intlDateFormatter :: long, intlDateFormatter :: Aucun, "Asie / Singapour"); $ date = new DateTime ("2020-10-10 00:00 UTC"); Echo $ format-> Format ($ Date);

Voyage dans le temps

Passons au temps de trajet et revenons au passé et à l'avenir. Tout d'abord, comprenons DateInterval:

Php $ interval = new DateInterval ("P4M1W2DT2H5M"); // P 4M 1W 2D T 2H 5M // // p = intervalle hebdomadaire (année, mois, semaine, jour) // 4m = 4 mois // 1W = 1 semaine // 2d = 2 jours // // t = intervalle de temps (heures, minutes, secondes) // 2h = 2 heures // 5m = 5 minutes?>

P et T sont utilisés pour séparer l'intervalle de période et l'intervalle de temps. Voici comment nous allons dans le futur:

php $ date = new DateTime ("2021-10-14"); $ interval = new DateInterval ("p2d"); Echo $ Futuredate-> Format ("YMD");

Voici comment nous pouvons revenir au passé:

Php $ date = new DateTime ("2021-10-14 10:00"); $ interval = new DateInterval ("pt6h"); Echo $ PastDate-> Format ("YMD H: I");

Si nous voulons utiliser le nom du jour de la semaine pour le voyage dans le temps, nous pouvons utiliser la méthode setTimeStamp () de la fonction strToTime () et de l'objet DateTime:

php $ nextTUesDay = strToTime ("Next tutoriel"); $ date = new DateTime ("2021-10-14"); $ date -?> SettimeStamp ($ nextTuesday); Echo $ Date-> Format ("YMD");

Voir la liste complète des paramètres strToTime () dans la documentation PHP.

Date et heure qui se produit régulièrement

Une caractéristique commune dans une application de calendrier consiste à mettre en place des rappels répétés, tels que deux jours ou une fois par semaine. Nous pouvons utiliser DatePeriod pour représenter une période de temps:

php $ start = new DateTime ("2021-10-01"); $ end = new DateTime ("2021-11-01"); $ interval = new DateInterval ("p1w"); // à partir du 1er octobre 2021 (inclusif), sauté toutes les 1 semaine // jusqu'au 1er novembre 2021 (à l'exclusion) foreach ($ gamme comme $ date) { Echo $ Date -?> Format ("ymd"). } // 2022-10-01 // 2022-10-08 // 2022-10-15 // 2022-10-22 // 2022-10-29

Combien de jours?

Saviez-vous qu'un service comme Twitter montrera x minutes / heure / jour / etc.? Nous pouvons le faire en calculant le temps écoulé entre l'heure actuelle et le temps où l'opération se produit.

php $ date = new DateTime ("2022-10-30"); $ date2 = new DateTime ("2022-10-25"); $ date3 = new DateTime ("2022-10-10"); $ date4 = new DateTime ("2022-03-30"); $ date5 = new DateTime ("2020-03-30"); fonction get_period_ago ($ enddate, $ startDate) { $ dateInterval = $ enddate -?> diff ($ startDate); if ($ dateinterval-> invert == 1) { if ($ dateinterval-> y> 0) { Retour $ dateinterval-> y. } if ($ dateinterval-> m> 0) { Retour $ dateInterval-> m il y a des mois; } if ($ dateinterval-> d> 7) { retour (int) ($ dateinterval-> d / 7). } if ($ dateinterval-> d> 0) { Retour $ dateinterval-> d. } } } echo get_period_ago ($ date, $ date2); Echo Get_period_ago ($ Date, $ Date3); Echo Get_period_ago ($ Date, $ Date4); Echo get_period_ago ($ Date, $ Date5);

Après avoir obtenu l'objet DateInterval à partir de la méthode Diff (), assurez-vous que la variable $ startDate se trouve dans le passé en vérifiant la propriété Invert. Vérifiez ensuite les propriétés Y, M et D.

Une liste complète des propriétés d'objet DateInterval peut être trouvée dans le document PHP ici.

Étapes suivantes?

Vous avez maintenant maîtrisé des extraits de code PHP qui sont couramment utilisés lorsqu'ils traitent des dates et des heures. Besoin d'obtenir la date et l'heure actuelles? Vous devez peut-être formater la date d'une manière ou d'une autre, ou inclure le fuseau horaire local, ou comparer les dates. Tout cela est là!

Bien sûr, nous n'avons pas discuté de plus de méthodes et de fonctions sur les dates et les heures - telles que les fonctions liées au calendrier, etc. Assurez-vous de vérifier la section date et heure du manuel PHP à tout moment pour plus de cas d'utilisation et d'exemples.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn