Convertir la date format AAAA-mm-JJ => JJ-mm-AAAA [dupliquer]
cette question a déjà une réponse ici:
j'essaie de convertir une date de AAAA-mm-JJ en JJ-mm-AAAA (mais pas en SQL); cependant je ne sais pas comment la fonction date nécessite un timestamp, et je ne peux pas obtenir un horodatage de cette chaîne.
Comment est-ce possible?
12 réponses
utiliser strtotime()
et date()
:
$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));
(voir strtotime et date docs sur le Site PHP).
Edit : notez que c'était une solution rapide à la question originale. Pour des conversions plus étendues, vous devriez vraiment utiliser le DateTime
classe à analyser & format: -)
si vous souhaitez éviter la conversion strtotime (par exemple strtotime n'est pas en mesure de parser vos entrées), vous pouvez utiliser,
$myDateTime = DateTime::createFromFormat('Y-m-d', $dateString);
$newDateString = $myDateTime->format('d-m-Y');
ou, de manière équivalente:
$newDateString = date_format(date_create_from_format('Y-m-d', $dateString), 'd-m-Y');
vous lui donnez d'abord le format $dateString est en. Alors vous lui dites le format dans lequel vous voulez que $newDateString soit.
ou si le format source est toujours "Y-m-d" (AAAA-mm-JJ), alors il suffit d'utiliser DateTime :
<?php
$source = '2012-07-31';
$date = new DateTime($source);
echo $date->format('d.m.Y'); // 31.07.2012
echo $date->format('d-m-Y'); // 31-07-2012
?>
implode('-', array_reverse(explode('-', $date)));
sans frais généraux de conversion de date,pas sûr que ce sera important.
$newDate = preg_replace("/(\d+)\D+(\d+)\D+(\d+)/","--",$originalDate);
ce code fonctionne pour chaque format de date.
vous pouvez changer l'ordre des variables de remplacement telles $3-$1-$2 en raison de votre ancien format de date.
aussi une autre possibilité obscure:
$oldDate = '2010-03-20'
$arr = explode('-', $oldDate);
$newDate = $arr[2].'-'.$arr[1].'-'.$arr[0];
je ne sais pas si je l'utiliserais, mais encore :)
Edit: parce que la réponse de ce post est parfois rétrograde, je suis revenu je suis ici pour demander aux gens de ne plus l'approuver. Ma réponse est Ancien, pas techniquement correct, et il ya plusieurs meilleurs les approches de droit ici. Je ne le garde ici que pour l'histoire. but.
bien que la documentation décrit mal La fonction strtotime, @rjmunro a correctement abordé la question dans son commentaire: c'est en ISO format de date "AAAA-MM-JJ".
aussi, même si ma fonction Date_Converter peut encore fonctionner, je comme pour l'avertir qu'il peut être imprécis énoncés ci-dessous, veuillez donc ne négligez.
la réponse la plus votée est en fait incorrecte!
ce qui signifie qu'une date fournie comme" Y-m-D " peut être mal interprétée par strtotime. Vous devez fournir la date dans le format prévu.
j'ai écrit une petite fonction pour retourner des dates dans plusieurs formats. Utilisez et modifiez comme bon vous semble. si quelqu'un en fait une classe, je serais heureux si cela être partagé.
function Date_Converter($date, $locale = "br") {
# Exception
if (is_null($date))
$date = date("m/d/Y H:i:s");
# Let's go ahead and get a string date in case we've been given a Unix Time Stamp
if ($locale == "unix")
$date = date("m/d/Y H:i:s", $date);
# Separate Date from Time
$date = explode(" ", $date);
if ($locale == "br") {
# Separate d/m/Y from Date
$date[0] = explode("/", $date[0]);
# Rearrange Date into m/d/Y
$date[0] = $date[0][1] . "/" . $date[0][0] . "/" . $date[0][2];
}
# Return date in all formats
# US
$Return["datetime"]["us"] = implode(" ", $date);
$Return["date"]["us"] = $date[0];
# Universal
$Return["time"] = $date[1];
$Return["unix_datetime"] = strtotime($Return["datetime"]["us"]);
$Return["unix_date"] = strtotime($Return["date"]["us"]);
$Return["getdate"] = getdate($Return["unix_datetime"]);
# BR
$Return["datetime"]["br"] = date("d/m/Y H:i:s", $Return["unix_datetime"]);
$Return["date"]["br"] = date("d/m/Y", $Return["unix_date"]);
# Return
return $Return;
} # End Function
deux façons de mettre en œuvre ce
1)
$date = strtotime(date);
$new_date = date('d-m-Y', $date);
2)
$cls_date = new DateTime($date);
echo $cls_date->format('d-m-Y');
utilisez cette fonction pour convertir de n'importe quel format à n'importe quel format
function reformatDate($date, $from_format = 'd/m/Y', $to_format = 'Y-m-d') {
$date_aux = date_create_from_format($from_format, $date);
return date_format($date_aux,$to_format);
}
ci-dessous est le code PHP pour générer la date de demain en utilisant mktime()
et changer son format en JJ/mm/AAAA format et ensuite l'imprimer en utilisant echo
.
$tomorrow = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("d", $tomorrow) . "/" . date("m", $tomorrow). "/" . date("Y", $tomorrow);