2011-03-23 13 views
8

Estoy intentando dar formato a una cita con un día sin el ceroRubí strftime: Día sin cero a,% e no funciona

con% d que trabaja muy bien, pero con cero a la izquierda

date_time.strftime("%d/%m/%y") 
result: 04/01/11 

Busqué en Google y descubrí que debería usar% e en lugar de% d, pero haciendo lo siguiente me da una cadena vacía.

date_time.strftime("%e/%m/%y") 
result: 

¿Tiene esto algo que ver con la versión de Ruby? Estoy usando v1.8.7 en una máquina con Windows. Y, lo que es más importante, ¿hay otra forma de lograr un día sin cero inicial (más conveniente que gsub)?

Respuesta

3

He tenido problemas antes con strftime en Windows que no admite exactamente los mismos códigos que en unix.

Además, me encontré con lo siguiente en Mac OS X:

> date_time.strftime("%e/%m/%y") 
" 3/03/11" 

Como se puede ver, hay un espacio donde estaba el cero. Aún debe procesar la cadena después de llamando a strftime.

Yo diría, vaya con la apuesta más segura, en este caso% d, y llame a gsub/trim en él.

1

probar esto

date_time.strftime("%d/%m/%y").gsub(/ 0(\d\D)/, ' \1') 
+0

Los espacios antes 0' 'y' \ 1' estan equivocados. También esto parece una solución bruta y demasiado cruda. –

9

Como opción:

date_time.strftime("#{date_time.day}/%m/%y") 
1

Por desgracia, la %e aún deja un espacio en lugar del 0. Si no desea que el espacio me acaba de pelar hacia fuera el líder 0 me gusta esto.

> date_time.strftime("%d/%m/%y").gsub(/^0/, '') 
"7/12/12" 
18

Si desea colocar el cero para el mes o el día sólo tiene que añadir un signo menos delante del formato, como este:

Date.parse("2014/06/06").strftime("%Y/%-d/%-m") 
+1

Perfecto. Esta debería ser la respuesta aceptada. –

+0

Gracias por esto :) Por curiosidad, ¿dónde encontraste esta información útil? – developer033