Position actuelle: Accueil> Derniers articles> Comment obtenir l'année en cours via la fonction idate et gérer le problème des limites du Nouvel An?

Comment obtenir l'année en cours via la fonction idate et gérer le problème des limites du Nouvel An?

M66 2025-07-28

Dans PHP, la fonction iDate () est un moyen concis et efficace d'extraire des informations de date ou de temps spécifiques de l'horodatage actuel ou spécifié. Par exemple, pour obtenir l'année ( Y ), le mois ( m ), le jour ( d ), etc., les développeurs l'utilisent souvent pour analyser rapidement les horodatages et effectuer un traitement logique à date.

Cet article expliquera "comment obtenir l'année en cours via la fonction iDate () et traitera le problème des limites du Nouvel An", aidant les développeurs à éviter les erreurs logiques courantes lors de la rédaction de scripts PHP sensibles au temps.

1. Utilisez l'iDate pour obtenir l'année en cours

L'utilisation de base d' Idate () est la suivante:

 <span><span><span class="hljs-variable">$year</span></span><span> = </span><span><span class="hljs-title function_ invoke__">idate</span></span><span>(</span><span><span class="hljs-string">'Y'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"L&#39;année en cours est: "</span></span><span> . </span><span><span class="hljs-variable">$year</span></span><span>;
</span></span>

Cet extrait de code sortira l'année grégorienne actuelle, comme 2025.

Idate () reçoit deux paramètres:

  1. Caractères de format (tels que «y» signifie l'année)

  2. Horodatage facultatif (par défaut pour utiliser l'heure actuelle)

Vous pouvez donc également obtenir l'année du temps spécifié en passant dans l'horodatage:

 <span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtotime</span></span><span>(</span><span><span class="hljs-string">'2024-12-31 23:59:59'</span></span><span>);
</span><span><span class="hljs-variable">$year</span></span><span> = </span><span><span class="hljs-title function_ invoke__">idate</span></span><span>(</span><span><span class="hljs-string">'Y'</span></span><span>, </span><span><span class="hljs-variable">$timestamp</span></span><span>);
</span></span>

2. Contexte du problème de la frontière du Nouvel An

Le problème du Nouvel An se produit généralement lorsque vous traitez «si un événement se produit au cours de l’année en cours» ou «comparer les données de l’année dernière». Par exemple, supposons que vous ayez une logique pour juger si un temps est "le dernier jour de l'année" ou "le premier jour de l'année prochaine", si l'année est inexacte, il est facile de faire des erreurs pendant la période du Nouvel An.

Surtout si la combinaison de Date () et StrtoTime () est inappropriée, il est facile de tromper le fuseau horaire, les limites de l'année, etc.

3. Cas: déterminez si un certain temps est l'année en cours

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">isInCurrentYear</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$timestamp</span></span></span><span>) {
    </span><span><span class="hljs-variable">$currentYear</span></span><span> = </span><span><span class="hljs-title function_ invoke__">idate</span></span><span>(</span><span><span class="hljs-string">'Y'</span></span><span>);
    </span><span><span class="hljs-variable">$targetYear</span></span><span> = </span><span><span class="hljs-title function_ invoke__">idate</span></span><span>(</span><span><span class="hljs-string">'Y'</span></span><span>, </span><span><span class="hljs-variable">$timestamp</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$currentYear</span></span><span> === </span><span><span class="hljs-variable">$targetYear</span></span><span>;
}

</span><span><span class="hljs-comment">// Exemple</span></span><span>
</span><span><span class="hljs-variable">$ts</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtotime</span></span><span>(</span><span><span class="hljs-string">'2025-01-01 00:00:00'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">isInCurrentYear</span></span><span>(</span><span><span class="hljs-variable">$ts</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"C&#39;est le moment。"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Ce n&#39;est pas le moment cette année。"</span></span><span>;
}
</span></span>

Cette fonction utilise l'iDate pour extraire l'heure actuelle et l'heure cible en même temps, garantissant ainsi la fiabilité du jugement et évitant le problème potentiel de l'utilisation de comparaisons de chaînes.

4. Traitement avancé: traitement des données du traitement pendant la transition de la nouvelle année à la nouvelle année

Un scénario commun lors de la gestion du Nouvel An est les problèmes de journal ou d'attribution statistique, tels que:

  • 2024-12-31 23:59:59 appartient à 2024

  • 2025-01-01 00:00:00 Il appartient à 2025

Si vous avez une logique commerciale qui "borde avec la frontière du jour", en utilisant iDate ('y', $ horodat) est une manière très simple, car elle analyse directement l'horodatage Unix à l'année correspondante.

Mais si votre logique repose sur la division précise du "fuseau horaire naturel +", assurez-vous de vous assurer que le fuseau horaire du système est cohérent. Vous pouvez définir le fuseau horaire uniformément par:

 <span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>); </span><span><span class="hljs-comment">// Définir le temps de Pékin</span></span><span>
</span></span>

Ensuite, appelez idate () pour s'assurer qu'il n'y aura pas d'erreurs de jugement de l'année en raison de fuseaux horaires par défaut incohérents.

5. Résumé

Idate () est une fonction sous-estimée mais très pratique, en particulier lorsqu'il s'agit d'une logique de date simple telle que l'année et le mois, ce qui est plus léger que la date () . En obtenant l'année à travers elle et en le combinant avec comparaison horaire, le problème de la frontière du Nouvel An peut être géré efficacement. Assurez-vous de prêter attention au réglage du fuseau horaire pour éviter une erreur de jugement logique aux moments critiques.

En général, la clé pour traiter la question de la frontière du Nouvel An est:

  1. Utiliser iDate () pour extraire des informations annuelles claires;

  2. Clarifier toujours la source de l'horodatage et du fuseau horaire du système;

  3. Écrivez une logique de jugement limite robuste pour couvrir les nœuds clés tels que le 31 décembre et le 1er janvier.