2011-03-12 3 views
0

J'insère plusieurs dates dans une base de données. La plupart d'entre eux écrivent normalement, de sorte que je peux utiliser strtotime pour obtenir le temps comme '1299XXXXXX'.Problème de strtotime PHP

Cependant, certaines dates sont écrites comme ceci: jour/mois/année heure/minute/seconde

echo strtotime('12/03/2011 18:00:52'); //this will get 132293165220 

Ainsi, je ne peux pas insérer toutes la date dans ma base de données. Comment résoudre le problème? Merci.

+0

Pouvez-vous s'il vous plait reformuler votre question? Voulez-vous dire que vos utilisateurs saisissent des dates sans se conformer à un format? – Dimitry

Répondre

1
$temp_date = strtotime('12/03/2011 18:00:52'); 
echo date('m/d/Y', $temp_date); 

où 'm/d/Y' est le format de votre choix: si vous voulez plein -> « m/d/YH: i: s',

si une partie seulement de la date -> 'm/d/Y'

plus sur http://us3.php.net/manual/en/function.date.php

+0

à droite, utilisez 'strtotime (date ('Y-d-m H: i: s', strtotime ('12/03/2011 18:00:52 '))); // 1299949252' –

0

Vous pouvez extraire la date en utilisant la fonction date:

date('h:i:s', strtotime('12/03/2011 18:00:52')); 
1

I loo ked autour et ne pouvait pas obtenir quelque chose de complet, donc j'ai décidé d'écrire mon propre convertisseur de date. Bien paramétré.

function convert_datetime($datestr,$separator,$mysqltouk) { 
    if(!empty($datestr)) 
    { 
     if($mysqltouk=='dmy')   
      { 
     list($y,$m,$d) = explode($separator, $datestr); 
     $mk=mktime(0, 0, 0, $m, $d, $y); 
     $timestamp=strftime('%d-%m-%Y',$mk); 
     } 
     else if ($mysqltouk='ymd') 
      { 
      list($d, $m, $y) = explode($separator, $datestr); 
     $mk=mktime(0, 0, 0, $m, $d, $y); 
     $timestamp=strftime('%Y-%m-%d',$mk); 
      } 
    } 
     return $timestamp; 
}