2013-07-02 6 views
0

Je suis le code suivant pour convertir cette date ->18/07/2013 en format supporté mysql.Erreur lors de la conversion du format de date PHP

$date = date('Y-m-d', strtotime('18/07/2013')); 

Idéalement, cela devrait revenir 2013-07-18 ...
Mais, le problème est qu'il sélectionne automatiquement la chaîne comme:
YEAR as YEAR MONTH as DAY DAY as MONTH

maintenant, car il identifie 18 comme month , il sort de la plage et il affiche la date par défaut 1970-01-01.

J'ai perdu presque deux jours sur cette chose.

Si quelqu'un peut aider, merci d'avance!

+2

Vous pouvez pirater comme 'strtotime (str_replace ('/', '-', '18/07/2013'))' –

+0

utiliser Veuillez la recherche avant de poster une nouvelle question , ceci est un doublon de [Strtotime() ne fonctionne pas avec le format jj/mm/aaaa] (http://stackoverflow.com/questions/2891937/strtotime-doesnt-work-with-dd-mm-yyyy-format – Prix

+0

Du manuel php -> YY "/" MM "/" DD c'est ce que vous êtes censé utiliser avec la fonction date ... http://php.net/manual/de/datetime.formats.date. php –

Répondre

2

Essayez cette :)

echo date('Y-m-d', strtotime(str_replace('/', '-', '18/07/2013'))); 
+0

Thanks man! Travaillé comme un charme! – Safeer

5

Utilisez l'objet DateTime, pour que php comprenne dans quel format vous lui passez la date.

$date = DateTime::createFromFormat('d/m/Y', '18/07/2013'); 
echo $date ->format('Y-m-d'); 
+0

N'est-ce pas pour 'PHP 5> = 5.3.0'? Une version antérieure de php est installée sur mon serveur. – Safeer

+0

@Safeer - Que je cas, vous devez faire tweak comme indiqué par andy & prix dans le commentaire. – Rikesh

+0

Merci Rikesh, ça a marché. La réponse d'Ayyappan est plutôt bonne aussi :) – Safeer

1

paramètre strtotime doit être au format 18-07-2013

0

Vous devez set the time zone de votre date, votre date est en cours d'analyse comme étant américaine et l'Américain le format de date est mm/jj/aaaa ...

date_default_timezone_set('Europe/Berlin'); 

utilisent également le right reg. expression for the date function

$date = date('YY "/" MM "/" DD', strtotime('18/07/2013')); 
0

barre oblique (/) signifie américaine M/D/Y formatage, un tiret (-) (.) Signifie européenne D-M-Y et une période ISO signifie Y.M.D.

Observer:

echo date("jS F, Y", strtotime("11.12.10")); 
// outputs 10th December, 2011 

echo date("jS F, Y", strtotime("11/12/10")); 
// outputs 12th November, 2010 

echo date("jS F, Y", strtotime("11-12-10")); 
// outputs 11th December, 2010