Dans PHP, nous pouvons obtenir tous les identificateurs de fuseau horaire valides via le fuseau de fonction intégré_endentifiants_list . Cette fonction renvoie un tableau contenant tous les identifiants de fuseau horaire. Ensuite, nous pouvons utiliser la classe DateTimeZone pour calculer le décalage UTC pour chaque fuseau horaire. Cet article expliquera en détail comment obtenir des décalages UTC pour tous les fuseaux horaires via ces fonctions et les afficher.
Tout d'abord, nous devons obtenir tous les identifiants de fuseau horaire valides. Nous pouvons utiliser la fonction timezone_identifiants_list () pour l'implémenter. Cette fonction n'accepte pas les paramètres, il renvoie un tableau contenant tous les identificateurs de fuseau horaire. Voici le code pour obtenir l'identifiant de fuseau horaire:
<span><span><span class="hljs-variable">$timezones</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_identifiers_list</span></span><span>();
</span></span>
Après avoir obtenu la liste des fuseaux horaires, nous devons parcourir ces identifiants de fuseau horaire et calculer son décalage UTC pour chaque fuseau horaire. Pour ce faire, nous pouvons utiliser la classe DateTimeZone pour créer un objet de fuseau horaire et utiliser la méthode getoffset () pour obtenir le décalage. La méthode getoffset () renvoie un décalage en secondes.
<span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezones</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>) {
</span><span><span class="hljs-comment">// Créer un objet de fuseau horaire</span></span><span>
</span><span><span class="hljs-variable">$tz</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-variable">$timezone</span></span><span>);
</span><span><span class="hljs-comment">// Obtenez l'heure actuelle UTC Compenser(unité:Deuxième)</span></span><span>
</span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-variable">$tz</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getOffset</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-variable">$tz</span></span><span>));
</span><span><span class="hljs-comment">// 将Compenser转换为小时和分钟的格式</span></span><span>
</span><span><span class="hljs-variable">$offset_hours</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$offset</span></span><span>, </span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// Calculez les heures</span></span><span>
</span><span><span class="hljs-variable">$offset_minutes</span></span><span> = </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>((</span><span><span class="hljs-variable">$offset</span></span><span> % </span><span><span class="hljs-number">3600</span></span><span>) / </span><span><span class="hljs-number">60</span></span><span>); </span><span><span class="hljs-comment">// Calculez le nombre de minutes</span></span><span>
</span><span><span class="hljs-comment">// 输出时区和Compenser</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span> . </span><span><span class="hljs-string">' UTC '</span></span><span> . (</span><span><span class="hljs-variable">$offset_hours</span></span><span> >= </span><span><span class="hljs-number">0</span></span><span> ? </span><span><span class="hljs-string">'+'</span></span><span> : </span><span><span class="hljs-string">'-'</span></span><span>) . </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$offset_hours</span></span><span>) . </span><span><span class="hljs-string">':'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$offset_minutes</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>
Dans le code ci-dessus, nous obtenons le nombre de secondes du décalage UTC via getoffset () . Pour afficher les décalages plus amicaux, nous devons les convertir en formats heure et minute. L'unité du décalage est des secondes. En le divisant par 3600, nous pouvons obtenir le nombre d'heures; Ensuite, en prenant le reste, nous pouvons calculer le nombre de minutes. Enfin, nous allons sortir le fuseau horaire et le décalage correspondant.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Obtenez tous les identifiants du fuseau horaire</span></span><span>
</span><span><span class="hljs-variable">$timezones</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_identifiers_list</span></span><span>();
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezones</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>) {
</span><span><span class="hljs-comment">// Créer un objet de fuseau horaire</span></span><span>
</span><span><span class="hljs-variable">$tz</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-variable">$timezone</span></span><span>);
</span><span><span class="hljs-comment">// Obtenez l'heure actuelle UTC Compenser(unité:Deuxième)</span></span><span>
</span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-variable">$tz</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getOffset</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-variable">$tz</span></span><span>));
</span><span><span class="hljs-comment">// 将Compenser转换为小时和分钟的格式</span></span><span>
</span><span><span class="hljs-variable">$offset_hours</span></span><span> = </span><span><span class="hljs-title function_ invoke__">intdiv</span></span><span>(</span><span><span class="hljs-variable">$offset</span></span><span>, </span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// Calculez les heures</span></span><span>
</span><span><span class="hljs-variable">$offset_minutes</span></span><span> = </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>((</span><span><span class="hljs-variable">$offset</span></span><span> % </span><span><span class="hljs-number">3600</span></span><span>) / </span><span><span class="hljs-number">60</span></span><span>); </span><span><span class="hljs-comment">// Calculez le nombre de minutes</span></span><span>
</span><span><span class="hljs-comment">// 输出时区和Compenser</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span> . </span><span><span class="hljs-string">' UTC '</span></span><span> . (</span><span><span class="hljs-variable">$offset_hours</span></span><span> >= </span><span><span class="hljs-number">0</span></span><span> ? </span><span><span class="hljs-string">'+'</span></span><span> : </span><span><span class="hljs-string">'-'</span></span><span>) . </span><span><span class="hljs-title function_ invoke__">abs</span></span><span>(</span><span><span class="hljs-variable">$offset_hours</span></span><span>) . </span><span><span class="hljs-string">':'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$offset_minutes</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Lorsque vous exécutez le code ci-dessus, vous verrez la sortie suivante:
<span><span>Africa/Abidjan UTC +0:00
Africa/Accra UTC +0:00
Africa/Addis_Ababa UTC +3:00
Africa/Algiers UTC +1:00
Africa/Asmara UTC +3:00
</span><span><span class="hljs-meta prompt_">...</span></span><span>
Asia/Kolkata UTC +5:30
Asia/Kuala_Lumpur UTC +8:00
Asia/Kuwait UTC +3:00
</span><span><span class="hljs-meta prompt_">...</span></span><span>
</span></span>
Chaque ligne montre un fuseau horaire et son décalage UTC correspondant, vous permettant de visualiser les différences de temps entre chaque fuseau horaire.
Considérez l'heure d'été : si vous souhaitez obtenir un décalage pour un fuseau horaire à une date spécifique, vous pouvez spécifier une heure spécifique pour l'objet DateTime au lieu d'utiliser une nouvelle DateTime ("Now", $ tz) . De cette façon, vous pouvez considérer l'impact de l'heure d'été (DST).
Traitement de date et d'heure : La méthode getoffset () renvoie un décalage par rapport à l'heure UTC. Généralement, il est très utile pour juger les différences de temps, mais si des conversions de date et de temps sont impliquées, vous devrez peut-être faire plus avec l'objet DateTime .
Format de sortie : le format de sortie de cet exemple est le format "UTC +/- Time: Minutes", que vous pouvez personnaliser au besoin, comme l'ajout de détails de date ou de fuseau horaire.
Grâce à la fonction Timezone_Identifiants_list de PHP et à la classe DateTimeZone , nous pouvons facilement obtenir les décalages UTC pour tous les fuseaux horaires. Cette fonctionnalité est très pratique dans les applications dans les fuseaux horaires et les projets qui nécessitent un calcul précis des différences de temps. Espérons que le guide d'exploitation détaillé de cet article vous aidera à mieux comprendre comment obtenir et afficher les décalages UTC pour le fuseau horaire.