La fonction Stratime est utilisée pour formater la date et l'heure et renvoie une chaîne en fonction du format spécifié. La syntaxe de base est la suivante:
<span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>()) : </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
où $ format est le format de la date et de l'heure, et $ horodatage est le horodat Unix à formater (par défaut est l'heure actuelle). Par exemple, utilisez Strftime pour formater l'heure actuelle:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span></span><span>);
</span></span>
Cela sortira la date et l'heure actuelles, similaires à 2025-06-16 12:30:45 .
Le fuseau horaire est un facteur important lors de l'utilisation de stretime pour le formatage des dattes. Par défaut, Strftime traite la date et l'heure en fonction du fuseau horaire actuel du serveur. Cependant, si nous exécutons le programme dans un fuseau horaire incorrect, nous pouvons vivre une erreur de conversion de fuseau horaire, ce qui entraîne le temps d'affichage incompatible avec celui attendu.
Strftime suit les paramètres de fuseau horaire par défaut du serveur. Cela signifie que si la configuration du fuseau horaire du serveur est incorrecte, la sortie temporelle à l'aide de Strftime sera formatée en fonction du mauvais fuseau horaire. Vous pouvez afficher le fuseau horaire actuel via date_default_timezone_get () :
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>();
</span></span>
Si le fuseau horaire est incorrect, vous pouvez utiliser date_default_timezone_set () pour définir le fuseau horaire correct:
<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>
De cette façon, lorsque Strftime est appelé, le temps retourné sera formaté en fonction du fuseau horaire défini.
Bien que STRFTIME puisse formater le temps, il ne prend pas en charge la conversion du fuseau horaire lui-même. Si vous avez besoin de convertir le temps entre les différents fuseaux horaires, le meilleur moyen est d'utiliser la classe DateTime , de créer d'abord un objet DateTime , de régler le fuseau horaire et enfin d'utiliser STRFTIME pour produire le temps formaté.
<span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'now'</span></span><span>, </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'UTC'</span></span><span>));
</span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setTimezone</span></span><span>(</span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span></span><span>, </span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTimestamp</span></span><span>());
</span></span>
Dans cet exemple, nous créons d'abord un objet DateTime pour le fuseau horaire UTC, puis le convertissons en fuseau horaire Shanghai (Asie / Shanghai) via la méthode SetTimeZone , et nous utilisons enfin Stratime pour formater l'heure.
Différentes régions peuvent ajuster le fuseau horaire en fonction de l'heure d'été (DST), ce qui affectera la sortie de Strftime . Dans ce cas, il est plus sûr d'utiliser la classe DateTime pour gérer les problèmes de temps de fuseau horaire et de lumière du jour que d'utiliser Strftime pour fonctionner directement. Par exemple, certaines régions des États-Unis et de l'Europe changent de décalage de fuseau horaire en fonction des saisons. DateTimeZone gère automatiquement ces ajustements d'heure d'été, tandis que Strftime ne peut pas les gérer directement.
Par exemple:
<span><span><span class="hljs-variable">$datetime</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'2025-06-16 12:00:00'</span></span><span>, </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'Europe/London'</span></span><span>));
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span></span><span>, </span><span><span class="hljs-variable">$datetime</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getTimestamp</span></span><span>());
</span></span>
Ici, l'Europe / Londres ajustera automatiquement le décalage du fuseau horaire en fonction de la question de l'heure d'été, et Strftime formara l'heure en fonction du fuseau horaire local du serveur.
Lorsque vous utilisez Strftime , vous devez faire attention au soutien des fuseaux horaires par différents symboles de format. Les symboles de format de temps commun sont les suivants:
% Y : Année
% M : mois
% D : date
% H : heures (système 24h / 24)
% M : Minutes
% S : secondes
Cependant, Strftime lui-même ne fournit pas la possibilité de former directement les informations de fuseau horaire. Si vous devez afficher des informations de fuseau horaire, vous devez envisager de combiner la méthode de format de la classe DateTime , ou en utilisant date_default_timezone_get () pour sortir le fuseau horaire.
Il convient de noter que Strftime forme un horodatage, qui est un entier représentant le nombre de secondes depuis le 1er janvier 1970. L'horodatage est indépendant du fuseau horaire, cependant, comment interpréter que l'horodatage est lié à l'heure locale. Pour ce faire, Strftime formara la sortie en fonction du fuseau horaire du serveur.
Par conséquent, pour obtenir le même horodatage dans différents fuseaux horaires, vous devez vous assurer que le fuseau horaire correct est spécifié lors de la génération de l'horodatage.
Lorsque vous utilisez la fonction Strftime pour le formatage de date et d'heure, la gestion de la conversion du fuseau horaire est un problème qui ne peut pas être ignoré. Les développeurs doivent prêter attention aux points suivants:
Réglage du fuseau horaire : assurez-vous que le fuseau horaire du serveur est correctement défini ou définissez explicitement le fuseau horaire dans le code.
Conversion du fuseau horaire : Strftime lui-même ne peut pas gérer la conversion du fuseau horaire. Il est recommandé d'utiliser la classe DateTime pour traiter la conversion du fuseau horaire, puis d'utiliser STRFTime pour formater l'heure.
Problème d'heure d'été : pendant l'interrupteur d'heure d'été, le décalage du fuseau horaire peut changer et DateTimeZone peut gérer automatiquement l'heure d'été.
Utilisation des symboles de format : les symboles de format de Strftime ne prennent pas en charge la sortie directe des informations de fuseau horaire et peuvent être considérées en combinaison avec la classe DateTime .
La compréhension de ces points clés peut aider les développeurs à éviter les erreurs de temps courantes lorsqu'ils traitent des applications de zone transversale et d'améliorer la fiabilité et la précision du système.