Fechas en correos rfc822

Arnau Sanchez pyarnau en gmail.com
Mar Jun 10 21:42:23 CEST 2008


javier serrano escribió:

> Estoy haciendo una aplicación que trabaja con correos y tengo un 
> problema al interpretar las fechas
> En varios correos que tengo en gmail la fecha esta en formato rfc822 (al 
> menos coincide con las especificaciones de la rfc822 
> http://www.faqs.org/rfcs/rfc822.html pagina 25)
> Ejemplo:
> Date: Tue, 10 Jun 2008 00:08:37 -0700 (PDT)
> 
> Entiendo todos los campos, sin embargo tanto Gmail como Thunderbird me 
> muestran la siguiente hora
> 10 de Junio de 2008 09:08
> 
> No se como hacen para sacar esta fecha, he probado varios métodos 
> distintos y ninguno me da el mismo resultado, la verdad es que no se ni 
> como hacerlo a mano, ¿tenéis alguna idea de que puede pasar?

(Siempre es bueno mandar algo de código para partir de algo ya trabajado...)

Está claro que los clientes de correo muestran la hora local: 00h (PDT) + 7h 
(UTC-PDT) + 2h (CEST-UTC) = 09h CEST. El módulo email.Util (no uses rfc822, está 
deprecado) tiene funciones que te facilitan el trabajo:

http://docs.python.org/lib/module-email.utils.html

Para convertir la cadena en un objeto útil hay que dar algunas vueltas (¿alguien 
sabe un camino más corto?):

import email
import time
s = "Tue, 10 Jun 2008 00:08:37 -0700 (PDT)"
localtime = time.localtime(email.Utils.mktime_tz(email.Utils.parsedate_tz(s)))

Y a partir de aquí, tirar de time.strftime con el locale establecido (si es que 
lo quieres traducido):

import locale
locale.setlocale(locale.LC_TIME, "es_ES")
time.strftime("%d de %B de %Y %H:%M", localtime)

'10 de junio de 2008 09:08'
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es