2012-03-28 45 views

Respuesta

41

E.g.

<?php 
$s = '8/29/2011 11:16:12 AM'; 
$dt = new DateTime($s); 

$date = $dt->format('m/d/Y'); 
$time = $dt->format('H:i:s'); 

echo $date, ' | ', $time; 

ver http://docs.php.net/class.datetime


de edición: Para mantener la AM/PM uso formato

$time = $dt->format('h:i:s A'); 
1

Esto debería hacer el truco:

$mystring_datetime = ....; 
$dt = DateTime::createFromFormat('m/d/Y H:i:s A', $mystring_datetime); 
$d = $dt->format('m/d/Y'); 
$t = $dt->format('H:i:s A'); 

También puede hacer algo como esto, pero 'S no forma preferida:

$mystring_datetime = ....; 
list($date, $time) = explode(' ', $mystring_datetime, 2); 

Ahora, $date y $time tienen valores apropiados ...

+0

thnx por respuesta funciona bien ..... – user1153176

2

Si su versión de PHP es bastante nueva, echa un vistazo a date_parse() y la matriz que devuelve. Puede formatear porciones de fecha u hora usando las entradas correspondientes.

3

Probablemente esta no sea la forma más limpia de hacerlo, pero puede utilizar un explosivo (tenga en cuenta que NO hay ninguna validación aquí). Será más rápido que una manipulación de fecha adecuada.

$str = '8/29/2011 11:16:12 AM'; 
$dates = explode(' ', $str); 
$dat = $dates[0]; 
$time = $dates[1]; 
5
<?php 
    $date = strtotime('8/29/2011 11:16:12 AM'); 
    $dat = date('m/d/y', $date); 
    $tme = date('H:m:s A',$date); 

?> 

Para obtener más información acerca de la función date(), PLZ visitar http://php.net/manual/en/function.date.php

3

Puede usar la función strtotime, siempre que las fechas sean posteriores al 1/1/1970 -

<?php 

$s = strtotime('8/29/2011 11:16:12 AM'); 

$date = date('m/d/Y', $s); 
$time = date('H:i:s A', $s); 

?> 

http://php.net/manual/en/function.strtotime.php

strtotime crea una marca de tiempo UNIX de la cadena que se pasa a ella.