Duplicate possible:
Format PHP Date String
J'essaye de convertir une date de dd/mm/yyyy => yyyy-mm-dd
. J'ai utilisé la fonction mktime () et d'autres fonctions, mais je n'arrive pas à le faire fonctionner. J'ai réussi à explode
la date d'origine en utilisant '/'
comme délimiteur, mais je n'ai pas réussi à modifier le format et à permuter le '/'
avec un '-'
.
Toute aide sera fortement appréciée.
Les dates dans les formats
m/d/y
oud-m-y
sont désambiguïsées en examinant le séparateur entre les divers composants: si le séparateur est une barre oblique (/
), alors l’Américainm/d/y
est assumé; par contre, si le séparateur est un tiret (-
) ou un point (.
), le format européend-m-y
est utilisé. Vérifiez plus ici .
Utilisez la fonction de date par défaut.
$var = "20/04/2012";
echo date("Y-m-d", strtotime($var) );
EDIT Je viens de le tester et, d'une manière ou d'une autre, PHP ne fonctionne pas bien avec le format jj/mm/aaaa. Voici une autre solution.
$var = '20/04/2012';
$date = str_replace('/', '-', $var);
echo date('Y-m-d', strtotime($date));
Essayez d'utiliser DateTime::createFromFormat
_$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');
_
Sortie
_2012-04-24
_
MODIFIER:
Si la date est 5/4/2010 (les deux J/M/AAAA ou JJ/MM/AAAA), cette méthode ci-dessous est utilisée pour convertir le 5/4/2010 au 2010-4-5 (AAAA-MM-JJ ou AAAA-MD).
_$old_date = explode('/', '5/4/2010');
$new_data = $old_date[2].'-'.$old_date[1].'-'.$old_date[0];
_
SORTIE:
_2010-4-5
_
Voici une autre solution n'utilisant pas date (). pas si malin :)
$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));
Faire ceci:
date('Y-m-d', strtotime('dd/mm/yyyy'));
Mais assurez-vous que "jj/mm/aaaa" est la date réelle.
Je peux voir d'excellentes réponses. Il n'est donc pas nécessaire de répéter ici. J'aimerais donc donner quelques conseils:
Je recommanderais d'utiliser un entier d'horodatage Unix au lieu d'un format de date lisible par l'homme pour gérer l'heure en interne, puis d'utiliser la fonction date()
de PHP pour convertir la valeur d'horodatage en un format de date lisible par l'homme pour l'affichage par l'utilisateur. Voici un exemple brut de la façon dont cela devrait être fait:
// Get unix timestamp in seconds
$current_time = date();
// Or if you need millisecond precision
// Get unix timestamp in milliseconds
$current_time = microtime(true);
Utilisez ensuite $current_time
selon les besoins de votre application (magasin, ajout ou soustraction, etc.), puis lorsque vous devez afficher la valeur de la date à vos utilisateurs, vous pouvez utiliser date()
pour spécifier le format de date souhaité. :
// Display a human-readable date format
echo date('d-m-Y', $current_time);
De cette façon, vous éviterez beaucoup de maux de tête liés aux formats de date, aux conversions et aux fuseaux horaires, car vos dates seront dans un format normalisé (horodatage Unix) compact, indépendant du fuseau horaire (toujours au format UTC) et largement pris en charge dans les langages de programmation et les bases de données. .