web-dev-qa-db-fra.com

PHP convertir le format de date jj / mm / aaaa => aaaa-mm-jj

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.

73
Daniel Mabinko

Les dates dans les formats m/d/y ou d-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éricain m/d/y est assumé; par contre, si le séparateur est un tiret (-) ou un point (.), le format européen d-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));
221
hjpotter92

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
_
86
Baba

Voici une autre solution n'utilisant pas date (). pas si malin :)

$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));
30
tosin

Faire ceci:

date('Y-m-d', strtotime('dd/mm/yyyy'));

Mais assurez-vous que "jj/mm/aaaa" est la date réelle.

4
honyovk

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. .

1
Achraf Almouloudi