Utilisez strtotime()
lors de votre premier rendez-vous puis date('Y-m-d')
reconvertissez-le:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Notez qu'il existe une différence entre l'utilisation d'une barre oblique /
et d'un trait d'union -
dans la strtotime()
fonction. Pour citer de php.net:
Les dates aux formats m / d / y ou dmy sont désambiguïsées en regardant le séparateur entre les différents composants: si le séparateur est une barre oblique (/), alors le m / d / y américain est supposé; alors que si le séparateur est un tiret (-) ou un point (.), alors le format européen dmy est supposé.
Pour éviter toute ambiguïté potentielle, il est préférable d'utiliser les dates ISO 8601 (AAAA-MM-JJ) ou DateTime :: createFromFormat () lorsque cela est possible.
strtotime
accepte certains formats. Vous ne pouvez pas le nourrir quoi que ce soit. C'est pourquoiDateTime::createFromFormat
devrait être utilisé à la place destrtotime
. Malheureusement, cette réponse a trop de votes positifs pour que quiconque y prête attention. C'est tout copier-coller de nos jours.Vous devez être prudent avec les formats m / d / Y et mdY. PHP considère
/
signifier m / d / Y et-
signifier dmY. Je décrirais explicitement le format d'entrée dans ce cas:De cette façon, vous n'êtes pas aux caprices d'une certaine interprétation.
la source
strtotime()
fonction.Pour analyser la date, vous devez utiliser: DateTime :: createFromFormat ();
Ex:
Cependant, faites attention, car cela plantera avec:
Vous devez en fait vérifier que le formatage s'est bien passé, d'abord:
Maintenant, au lieu de planter, vous obtiendrez une exception, que vous pouvez attraper, propager, etc.
$ dateDE a le mauvais format, il devrait être "16.10.2013";
la source
Edit: vous pouvez également passer un constructeur DateTimeZone à DateTime () pour assurer la création de la date pour le fuseau horaire souhaité, pas celui par défaut du serveur.
la source
Pour la première date
Pour une nouvelle date
la source
Si vous avez le format jj-mm-aaaa, alors en PHP, cela ne fonctionnera pas comme prévu. Dans le document PHP, ils ont ci-dessous la directive.
Donc, vous ne pouvez pas utiliser comme vous le souhaitez. Lorsque vous essayez d'utiliser le format jj / mm / aaaa avec cela, cela supprimera FAUX. Vous pouvez modifier les éléments suivants.
la source
Comme nous avons la date "07 / Mai / 2018" et nous avons besoin de la date "2018-05-07" comme mysql compatible
Ça marche pour moi. prendre plaisir :)
la source
Puisque personne ne l'a mentionné, voici une autre façon:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
la source
Si vous souhaitez accepter des dates en utilisant la commande américaine (mois, date, année) pour les formats de style européen (en utilisant un tiret ou une période comme jour, mois, année) tout en acceptant d'autres formats , vous pouvez étendre la classe DateTime:
Ou, vous pouvez créer une fonction pour accepter mdY et afficher Ymd:
la source
pour créer la date à partir de n'importe quelle chaîne, utilisez:
$ date = DateTime :: createFromFormat ('dmy H: i', '01 -01-01 01:00 '); echo $ date-> format ('Ymd H: i');
la source