La conversion de la chaîne de Date et DateTime
Si j'ai une chaîne PHP dans le format de mm-dd-YYYY
(par exemple, 10-16-2003), comment convertir un Date
et puis un DateTime
dans le format de YYYY-mm-dd
? La seule raison pour laquelle je demande pour les deux Date
et DateTime
est parce que j'en ai besoin dans un seul endroit, et l'autre dans un endroit différent.
Vous devez vous connecter pour publier un commentaire.
Utilisation
strtotime()
sur votre première date, puisdate('Y-m-d')
à convertir:Notez qu'il existe une différence entre l'utilisation de la barre oblique
/
et le trait d'union-
dans lestrtotime()
fonction. Pour citer php.net:strtotime
accepte certains formats. Vous ne pouvez pas nourrir quoi que ce soit. C'est pourquoiDateTime::createFromFormat
doit être utilisé au lieu destrtotime
. Malheureusement, cette réponse a trop de upvotes pour quiconque de payer attention. C'est tout copier coller de ces jours.Vous devez être prudent avec m/d/Y et m-d-Y les formats. PHP considère
/
de moyenne m/d/Y et-
à dire d-m-Y. je voudrais décrire explicitement le format d'entrée dans ce cas:De cette façon, vous ne sont pas les caprices d'une certaine interprétation.
strtotime()
fonction.Pour analyser la date, vous devez utiliser:
DateTime::createFromFormat();
Ex:
Cependant, attention, car cela va se planter avec:
Vous avez réellement besoin de vérifier que la mise en forme s'est bien passé, tout d'abord:
Maintenant, au lieu de s'écraser, vous aurez une exception, que vous pouvez intercepter, de propager, etc.
$dateDE le format incorrect, il doit être "16.10.2013";
Edit: vous pouvez également passer une DateTimeZone de type DateTime() constructeur pour assurer la création de la date pour le fuseau horaire désiré, pas le serveur par défaut.
Si vous avez le format jj-mm-aaaa puis en PHP, il ne fonctionnera pas comme prévu. En PHP document qu'ils ont en dessous de la ligne directrice.
Donc, vous ne pouvez pas l'utiliser comme vous le souhaitez. Lorsque vous essayez d'utiliser jj/mm/aaaa avec cela, alors il va supprimer les FAUX. Vous pouvez modifier avec le suivant.
Pour la première Date
Pour La Nouvelle Date
Comme nous l'avons date "07/Mai/2018" et nous avons besoin de la date "2018-05-07" comme mysql compatible
Cela fonctionne pour moi. enjoy 🙂
Depuis, personne n'a mentionné cela, voici une autre façon:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");