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-intlPour 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-29Combien 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Il existe trois fa?ons de créer un rotateur de chargement CSS: 1. Utilisez le rotateur de base des frontières pour obtenir une animation simple via HTML et CSS; 2. Utilisez un rotateur personnalisé de plusieurs points pour atteindre l'effet de saut à travers différents temps de retard; 3. Ajoutez un rotateur dans le bouton et basculez les classes via JavaScript pour afficher l'état de chargement. Chaque approche souligne l'importance des détails de conception tels que la couleur, la taille, l'accessibilité et l'optimisation des performances pour améliorer l'expérience utilisateur.

Pour faire face à la compatibilité du navigateur CSS et aux problèmes de préfixe, vous devez comprendre les différences de prise en charge du navigateur et utiliser raisonnablement les préfixes des fournisseurs. 1. Comprendre les problèmes communs tels que Flexbox et le support de la grille, Position: Sticky Invalid et les performances d'animation sont différentes; 2. Vérifier l'état du support de la fonction de confirmation de Caniuse; 3. Utilisez correctement -webkit-, -moz-, -ms-, -o- et autres préfixes du fabricant; 4. Il est recommandé d'utiliser AutopRefixer pour ajouter automatiquement les préfixes; 5. Installez PostCSS et configurez le navigateur pour spécifier le navigateur cible; 6. Gérer automatiquement la compatibilité pendant la construction; 7. Les fonctionnalités de détection modernizr peuvent être utilisées pour les anciens projets; 8. Pas besoin de poursuivre la cohérence de tous les navigateurs,

HEMAINDIFFERENCESBetweendisplay: Inline, Block, Andinline-BlockInhtml / CSSareLayoutBehavior, SpaceUsage et StylingControl.1.InlineElementsflowWithText, Don'tStartNewLines, Ignorewidth / Height, AndonlyApplyhorizontalPadding / Marges - IdealForninetLetetStyLinSing

Utilisez l'attribut Clip-Path de CSS pour recadrer des éléments en formes personnalisées, telles que les triangles, les encoches circulaires, les polygones, etc., sans compter sur des images ou des SVG. Ses avantages incluent: 1. Prend en charge une variété de formes de base telles que le cercle, l'ellipse, le polygone, etc.; 2. Ajustement réactif et adaptable aux terminaux mobiles; 3. Facile à l'animation, et peut être combiné avec le survol ou le javascript pour obtenir des effets dynamiques; 4. Il n'affecte pas le flux de disposition et ne culte que la zone d'affichage. Les usages communs sont tels que le chemin de clip circulaire: cercle (50pxatcenter) et trame de clip Triangle: polygone (50% 0%, 100 0%, 0 0%). Avis

La définition du style de liens que vous avez visité peut améliorer l'expérience utilisateur, en particulier dans les sites Web à forte intensité de contenu pour aider les utilisateurs à mieux naviguer. 1. Utilisez CSS: Pseudo-classe visité pour définir le style du lien visité, tels que les changements de couleur; 2. Notez que le navigateur permet uniquement la modification de certains attributs en raison des restrictions de confidentialité; 3. La sélection des couleurs doit être coordonnée avec le style global pour éviter la brutalité; 4. Le terminal mobile peut ne pas afficher cet effet et il est recommandé de le combiner avec d'autres invites visuelles telles que les logos auxiliaires ic?nes.

Pour créer des images réactives à l'aide de CSS, elle peut être principalement réalisée grace aux méthodes suivantes: 1. Utilisez la largeur maximale: 100% et hauteur: Auto pour permettre à l'image de s'adapter à la largeur du conteneur tout en maintenant la proportion; 2. Utilisez les attributs SRCSET et tailles de HTML pour charger intelligemment les sources d'image adaptées à différents écrans; 3. Utilisez l'objet-ajustement et la position d'objet pour contr?ler le recadrage d'images et l'affichage de la mise au point. Ensemble, ces méthodes garantissent que les images sont présentées clairement et magnifiquement sur différents appareils.

Différents navigateurs ont des différences dans l'analyse CSS, ce qui entra?ne des effets d'affichage incohérents, y compris principalement la différence de style par défaut, la méthode de calcul du modèle de bo?te, le niveau de support Flexbox et la disposition de la grille et le comportement incohérent de certains attributs CSS. 1. Le traitement de style par défaut est incohérent. La solution consiste à utiliser cssreset ou normaliser.css pour unifier le style initial; 2. La méthode de calcul du modèle de bo?te de l'ancienne version de IE est différente. Il est recommandé d'utiliser la taille d'une bo?te: Border-Box de manière unifiée; 3. Flexbox et Grid fonctionnent différemment dans les cas de bord ou dans les anciennes versions. Plus de tests et utilisent Autoprefixer; 4. Certains comportements d'attribut CSS sont incohérents. Caniuse doit être consulté et rétrogradé.

Le choix des unités CSS dépend des exigences de conception et des exigences réactives. 1.PX est utilisé pour la taille fixe, adaptée à un contr?le précis mais au manque d'élasticité; 2.EM est une unité relative, qui est facilement causée par l'influence de l'élément parent, tandis que REM est plus stable en fonction de l'élément racine et convient à la mise à l'échelle globale; 3.VW / VH est basé sur la taille de la fenêtre, adaptée à la conception réactive, mais l'attention doit être accordée aux performances sous des écrans extrêmes; 4. Lors du choix, il doit être déterminé en fonction de la question de savoir si les ajustements réactifs, les relations de hiérarchie d'éléments et la dépendance de la fenêtre. Une utilisation raisonnable peut améliorer la flexibilité et la maintenance de la disposition.
