2011-01-23 19 views
5

tengo una fecha en este formato:Cómo convertir una fecha en un formato determinado

20,110,122,000,000.000

cómo puedo cambiar eso por lo que es

12.01.2011 

(12 de enero de 2011)

Luego uso esto en php:

$origDate = "20110112000000.000"; 
$newDate = date("d.m.Y", strtotime($origDate)); 

que pueda salir algo como:

01.12.2011 

Gracias!

+2

Si su código PHP funciona, basta con cambiar d.m.Y a m.d.Y? –

+0

@ Dan, hice esa suposición al principio, el código no produce los resultados esperados. –

Respuesta

0

sólo una suposición en el formato de fecha en la que los números se colocan constantemente se puede formar manualmente la fecha y hora:

$origDate = "20110112000000.000"; 
$newDate = date("d.m.Y", mktime(0,0,0, 
    substr($origDate, 4, 2), // month 
    substr($origDate, 6, 2), // day 
    substr($origDate, 0, 4)) // year 
); 

que produce 01.12.2011

2

Si está utilizando> = PHP 5.3

$date = DateTime::createFromFormat('Ymd', '20110112000000.000'); 
echo $date->format('d.m.Y'); 

No puedo probar PHP 5.3 aquí, así que si esa cosa extraña se está reproduciendo createFromFormat(), simplemente quítela primero.

No sé sobre todos sus formatos, pero esto eliminará todo 0 y . al final de la cadena.

$date = rtrim($date, '.0') 

Y debido a que el número más significativo es siempre a la derecha, (2 en este ejemplo), no debería ser un problema.

1

Así es como yo lo haría:

$origDate = "20110112000000.000"; 
# strip stuff after the period because strptime doesn't support milliseconds 
$date = preg_replace("/\.\d+$/", "", $origDate); 
$time = strptime($date, "Ymdhms"); 
$newDate = strftime("%m.%d.%Y", mktime($time)); 
echo $newDate; 
Cuestiones relacionadas