2010-10-06 10 views
2


J'ai la boîte d'entrée pour obtenir la valeur au format mm-jj-aaaa. Alors quand je reçois la date, j'essaie de le convertir en format AAAA-MM-JJ.Mais ça ne marche pas. Par exemple:
<? $birthdate="08-13-2000"; $date=date('Y-m-d',strtotime($birthdate)); echo $date; ?>. La sortie est 1970-01-01.
Mais si j'ai donné 13-08-2000 j'ai obtenu 2000-08-13. I dont want to split .Parce que dans mon application j'ai utilisé dans de nombreux lieux comme celui-ci.Mais je pense que le strtotime le convertir en format timestamp Unix même quelle que soit la valeur.C'est pourquoi je suis essayer de faire.Quel est le problème que je comprends ou fais?
Merci d'avance.Comment convertir la date en format paticular en utilisant PHP?

+1

Convertir "quelle que soit la valeur" est impossible - si vous avez 11-08-2000, est-ce Nov 08, ou Août 11? Jetez un oeil à http://php.net/manual/fr/function.strptime.php – Amadan

Répondre

4

strtotime() analyse les dates séparées par des tirets en tant que jj-mm-aaaa. Vous devez entrer la date de naissance comme "08/13/2000". str_replace devrait faire le travail pour cela si vous ne pouvez pas changer le séparateur attendu pour l'entrée.

crédit pour les différences de séparation à sam à frontiermedia dot au dot net php.net

Edit: Demandez un exemple de code pour si vous devez faire le remplacer:

$birthdate = '08-13-2000'; 
$birthdate = str_replace('-','/',$birthdate); 
$date  = date('Y-m-d',strtotime($birthdate)); 

echo $date; 

Sinon, il » d être juste

$birthdate = '08/13/2000'; 
... snip ... 
4

Essayez ceci:

$date = explode("-", "08-13-2000"); // input MM-DD-YYYY 
$time = mktime(0, 0, 0, $date[0], $date[1], $date[2]); // to time 
$date = date('Y-m-d', $time); // transform to Y-m-d 
echo $date; // output YYYY-MM-DD 
  • $ date [0] est le mois
  • $ date [1] est le jour
  • $ date [2] est l'année

Et si vous l'utilisez dans manyplaces, faites une fonction():

function transformDate($input) 
{ 
    $date = explode("-", $input); 
    $time = mktime(0, 0, 0, $date[0], $date[1], $date[2]); 
    $date = date('Y-m-d', $time); 

    return $date; 
} 

echo transformDate("08-13-2000"); 
+0

Je pense que exploser ("-", "08-13-2000") fonctionnerait beaucoup mieux. – lonesomeday

+0

Ne voudriez-vous pas exploser ('-', '08-13-2000'); ? – ASpencer

+0

Vrai, ma faute, l'édition! :) – ipalaus

Questions connexes