2012-09-03 41 views
6

Im escribiendo una aplicación, y estoy usando un selector de fecha y hora para permitir a los usuarios seleccionar una fecha y hora. Después de algún formato en javascript, im dejó con una fecha y hora de esta manera:¿Cuál es el formato correcto para django dateTime?

2012-09-04 06:00 PM 

y Django lanza y error diciendo:

[u"'2012-09-04 06:00 PM' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."] 

Ive también trató

2012-09-04 06:00PM 
2012-09-04 06:00 P.M. 
2012-09-04 06:00P.M. 

pero no hubo suerte. ¿Alguien puede ver lo que estoy haciendo aquí? ¿O sabes lo que Django está buscando (en inglés)?

+0

¿Tiene una [formulario de Django] (https://docs.djangoproject.com/en/1.4/topics/forms/) manejando su formulario? Si es así, veamos qué aspecto tiene. – Chris

+0

No forma django, simplemente usando una cadena de consulta, analizándola y guardando los resultados en la base de datos. – itcropper

Respuesta

22

Según lo dicho por el msg de error, que espera YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ], siguiendo así son valores válidos:

2012-09-04 06:00 
2012-09-04 06:00:00 
2012-09-04 06:00:00.000000 

# w/ optional TZ as timezone. 
2012-09-04 06:00Z # utc 
2012-09-04 06:00:00+0800 
2012-09-04 06:00:00.000000-08:00 
+0

¿Hay alguna forma de diferenciar entre am o pm? – itcropper

+0

@eastbeast No me asusta el 'DateTimeField' – okm

+2

Para ser justo con @eastbeast, el mensaje de error no proporciona información completa sobre el formato de zona horaria con la especificación' ...]] [TZ] '. No especifica que "UTC" y "PST" son valores inválidos para '[TZ]' mientras que "Z", "-0800" y "-08: 00" son valores válidos. – hobs

1

Después de hablar nada más, lo que me di cuenta es que no hay entrada de AM/PM. Solo tenía que comprobar si mi dateTimePicker estaba devolviendo un sufijo AM o PM, luego llamar a time.split (":"); para dividir horas y minutos, convierta las horas en int a partir de una cadena, luego sume 12 para convertir el tiempo a 24 horas en lugar de 12 horas. Probablemente la forma más fácil de hacerlo, pero eso fue lo que funcionó para mí.

Por ejemplo:

2012-09-04 06:00 PM

necesita ser

2012-09-04 18:00

Cuestiones relacionadas