2012-10-12 75 views

Respuesta

31

Derivado de su ejemplo el que aporta un poco tarde

echo date('d-m-Y \a\t H:i:s') . ' hours'; 

si se trata de un objeto de fecha y hora

echo $datetime->format('d-m-Y \a\t H:i:s') . ' hours'; 

si ya lo tiene como una cadena

echo str_replace(' ', ' at ', $datetime) . ' hours'; 
+14

'\ a \ t' devuelve' a' para mí. Sin embargo, ponga otra '\ a \\ t'. – rybo111

+1

Esto se debe a que mientras 't' es un elemento de cadena' fecha' (número de días en un mes dado), escapándolo como '\ t' muestra una pestaña. ¡Por lo tanto, necesita un escape extra! – Ben

+0

'\ a \ t' me funciona así como' a \\ t' –

7

sí se poder.

$date=date("m-d-Y"); 
$time=date("H:i:s"); 
$display=$date.'at'.$time; 
+1

Quizás cambie esto a '$ display = $ date. ' en '. $ time; 'Observe los espacios alrededor de' at'. –

0

En primer lugar por favor, ponga la fecha dada en formato ISO para que strtotime() puede leerlo y luego usar date() función para dar formato a la fecha en consecuencia.

date('/*DATE FORMAT YOU WANTED*/', strtotime('/*ISO FORMATTED DATE*/')); 
3

Curiosamente yo quería poner

date("l the jS F Y");

para leer, por ejemplo, El lunes 9 de enero de 2017, pero recibí "Lunes 3106UTC 9 de enero de 2017". Leí la respuesta anterior de xception y la cambié a date("l \t\h\e jS F Y"), que me dio "lunes h 9 de enero de 2017", así que leí el comentario de rybo111 y lo cambié a date("l \t\\h\\e jS F Y") y todavía no funcionaba como lo hice ahora "Monday he 9 de enero de 2017 ".

Después de un poco de rasguño de la cabeza, pensé que si las letras de la palabra también forman parte de la función de fecha(), por ejemplo t = Número de días en el mes dado, estas deben escaparse por duplicado, de lo contrario un solo escape será suficiente. Por lo tanto, por qué "at" debe codificarse \a\\t y "the" como \\t\\h\\e.

Cuestiones relacionadas