Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Problema con las fechas

Estas en el tema de Problema con las fechas en el foro de Python en Foros del Web. Hola, Estoy teniendo problemas a la hora de insertar fechas en la base de datos. Tengo un form que es el siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 29/04/2013, 08:33
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 14 años
Puntos: 7
Problema con las fechas

Hola,

Estoy teniendo problemas a la hora de insertar fechas en la base de datos.

Tengo un form que es el siguiente:
Código HTML:
Ver original
  1. <input type="text" class="fecha" name="dia" maxlength="2" size="2" value="{{ dia }}" />/
  2.             <input type="text" class="fecha" name="mes" maxlength="2" size="2" value="{{ mes }}" />/
  3.             <input type="text" class="fecha-ano" name="ano" maxlength="100" size="4" value="{{ ano }}" />
  4.             <br/>
  5.             <input type="text" class="fecha" name="hora" maxlength="2" size="2" value="{{ hora }}" />:
  6.             <input type="text" class="fecha" name="minuto" maxlength="2" size="2" value="{{ minuto }}" />:
  7.             <input type="text" class="fecha" name="segundo" maxlength="2" size="2" value="{{ segundo }}" />

Así, mediante la vista, le paso los parámetros de año, mes, día, hora, minuto y segundo.

El problema viene a la hora de actualizar dichos datos en la base de datos.
Tengo algo así:
Código Python:
Ver original
  1. dia                 = solicitud.POST['dia']
  2.                 mes                 = solicitud.POST['mes']
  3.                 ano                 = solicitud.POST['ano']
  4.                 hora                = solicitud.POST['hora']
  5.                 minuto              = solicitud.POST['minuto']
  6.                 segundo             = solicitud.POST['segundo']

El cual me captura perfectamente los datos. Luego tengo:
Código Python:
Ver original
  1. fecha_publicacion   = "%Y-%m-%d %H:%M:%S" % (ano,mes,dia,hora,minuto,segundo)

Para crear la fecha. Y ahí me da el problema. He intentado a ponerla yo manualmente y funciona bien, pero si lo pongo así me salta el error:
Código Python:
Ver original
  1. unsupported format character 'Y' (0x59) at index 1

El error me salta en la línea en la que concateno la fecha y la pongo bien.

La cosa es que en la página del error de Django me sale como que el formato que estoy usando de fechas se puede usar:

DATETIME_INPUT_FORMATS
('%Y-%m-%d %H:%M:%S',
'%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M',
'%Y-%m-%d',
'%m/%d/%Y %H:%M:%S',
'%m/%d/%Y %H:%M:%S.%f',
'%m/%d/%Y %H:%M',
'%m/%d/%Y',
'%m/%d/%y %H:%M:%S',
'%m/%d/%y %H:%M:%S.%f',
'%m/%d/%y %H:%M',
'%m/%d/%y')

Por lo tanto no sé que puedo hacer.

¿Alguien tiene alguna idea?
Gracias!
__________________
@JaimeMSE - ¡Sígueme!
  #2 (permalink)  
Antiguo 29/04/2013, 10:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Problema con las fechas

1.- Te recomiendo no reinvertar la rueda usa forms son tu mejor aliada en Django.
2.- Formateo de cadenas != strftime y strptime.
3.- Espero que no estes guardando la fecha y hora en muchos campos, por ejemplo un campos de año, mes, dia, etc...

Código Python:
Ver original
  1. import datetime
  2. # ...
  3. fields = ('ano', 'mes', 'dia','hora' , 'minuto', 'segundo')
  4. field_list = [int(solicitud.POST[field]) for field in fields]
  5. publish_datetime = datetime.datetime(*field_list) # Con esto lo guardas en la db
  6. publish_datetime_string = publish_datetime.strftime("%Y-%m-%d %H:%M:%S")
  #3 (permalink)  
Antiguo 02/05/2013, 08:10
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 14 años
Puntos: 7
Respuesta: Problema con las fechas

Pongo otra solución, por si a alguno le sirve.

Código Python:
Ver original
  1. dia                 = int(solicitud.POST['dia'])
  2. mes                 = int(solicitud.POST['mes'])
  3. ano                 = int(solicitud.POST['ano'])
  4. hora                = int(solicitud.POST['hora'])
  5. minuto              = int(solicitud.POST['minuto'])
  6. segundo             = int(solicitud.POST['segundo'])
  7.  
  8. fecha_publicacion   = datetime(ano, mes, dia, hora, minuto, segundo)
__________________
@JaimeMSE - ¡Sígueme!

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:00.