Maison >développement back-end >Problème PHP >Comment convertir une chaîne en objet DateTime en utilisant php

Comment convertir une chaîne en objet DateTime en utilisant php

PHPz
PHPzoriginal
2023-03-21 11:10:371644parcourir

En PHP, la conversion des chaînes et de l'heure est un problème fréquemment rencontré. Surtout lorsqu'il s'agit d'opérations liées aux horodatages, aux dates et aux heures, la conversion des chaînes et des heures est particulièrement importante. Cet article détaillera comment convertir une chaîne en objet DateTime en PHP.

1. Opérations de base de conversion de chaînes en objets DateTime

En PHP, vous pouvez utiliser la méthode createFromFormat() dans la classe DateTime pour convertir des chaînes en objets DateTime. Le prototype de fonction de cette méthode est le suivant :

public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone = NULL ] )

Parmi eux, le paramètre $format est utilisé pour représenter le format de la chaîne d'heure, le paramètre $time représente la chaîne qui doit être convertie en objet DateTime, et le Le paramètre $timezone représente le fuseau horaire qui doit être défini. La valeur du paramètre $format est la même que celle de la fonction strftime(), comme suit :

Format Signification
%d Le jour du mois, avec les zéros non significatifs (01 -31 )
%m Mois, avec des zéros non significatifs (01-12)
%Y Année, quatre chiffres
%H Heure, format 24 heures, avec non significatif zéros ( 00-23)
%i minutes, avec des zéros non significatifs (00-59)
%s secondes, avec des zéros non significatifs (00-59)
%p am Ou après-midi en minuscules (am ou pm)
%P Matin ou après-midi en majuscules (AM ou PM)

Voici un exemple de conversion d'une chaîne en un objet DateTime :

<?php
$dateStr = &#39;2018-03-15&#39;;
$dateTime = DateTime::createFromFormat(&#39;Y-m-d&#39;, $dateStr);
echo $dateTime->format('Y-m-d H:i:s');
?>

Cet exemple convertit la chaîne "2018-03-15" en un objet DateTime et utilise la méthode format() pour la formater sous la forme "2018-03-15 00:00:00".

2. Conversion de chaînes au format date et heure

Lors du traitement des chaînes au format date et heure, nous devons utiliser un format de date et d'heure spécifique pour la conversion. Voici quelques formats de date et d'heure couramment utilisés :

format signifiant
A-m-d année, mois et jour (tels que : 2018-03-15)
A/ m/d Année, mois et jour (par exemple : 2018/03/15)
A.m.d Année, mois et jour (par exemple : 2018.03.15)
Y année, mois , et jour Année, mois et jour (tels que : 2018.03 Mois 15)
Ymd Année, mois et jour (tels que : 20180315)
H:i:s Heure : minute : seconde (par exemple : 22:30:15)
H : i Heure : Minutes (par exemple : 22:30)
A-m-d H:i:s Année Mois Jour Heure : Minutes : Secondes (par exemple : 2018-03-15 22:30:15)
Y année m mois j jour H:i année mois jour heure : minute (par exemple : 15 mars 2018 22h30)

Par exemple, la chaîne "15 mars 2018 22:30" Un exemple de conversion en objet DateTime est le suivant :

<?php
$dateStr = &#39;2018年03月15日 22:30&#39;;
$dateTime = DateTime::createFromFormat(&#39;Y年m月d日 H:i&#39;, $dateStr);
echo $dateTime->format('Y-m-d H:i:s');
?>

Cet exemple convertit la chaîne "2018-03-15 22:30" en un DateTime et utilise la méthode format() pour le formater sous la forme "2018-03-15 22:30:00".

3. Réglage du fuseau horaire

Dans le processus de traitement de la date et de l'heure, le réglage du fuseau horaire est très important. Les paramètres de fuseau horaire peuvent être obtenus via des méthodes statiques dans la classe DateTimeZone. Voici quelques fuseaux horaires couramment utilisés :

Nom du fuseau horaire Signification
Africa/Abidjan Heure de la Côte d'Ivoire
Africa/Accra Ghana Standard Time
Afrique /Addis_Ababa Heure de l'Afrique de l'Est
Amérique/New_York Heure de l'Est des États-Unis
Asie/Shanghai Heure standard de la Chine
Australie/Sydney Australie Heure normale de l'Est
Europe/ Paris Heure d'Europe centrale
Pacifique/Fidji Heure de Fidji

例如设置时区为中国标准时间的例子如下:

<?php
$dateStr = &#39;2018-03-15 22:30:15&#39;;
$timezone = new DateTimeZone(&#39;Asia/Shanghai&#39;);
$dateTime = DateTime::createFromFormat(&#39;Y-m-d H:i:s&#39;, $dateStr, $timezone);
echo $dateTime->format('Y-m-d H:i:s');
?>

以上例子将字符串"2018-03-15 22:30:15"转换为DateTime对象,并将时区设置为中国标准时间。

四、总结

通过本文的介绍,我们学习了如何将字符串转换为PHP中的DateTime对象。在实际开发中,我们需要根据时间格式和时区的需求来设置转换参数。同时,在处理时间相关操作时,也需要注意时区的设置以及日期时间格式的转换。

需要指出的是,在字符串转换为DateTime对象过程中,需要保证字符串的格式与时间格式一致。一旦字符串格式不正确,将导致转换失败。因此,在处理时间相关操作时,需要仔细检查字符串格式以及转换参数。

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