Estoy expandiendo un comentario anterior y una respuesta a la mitad con suerte una respuesta utilizable.
Ésta produce que yo sepa, un formato más adecuado y conveniente fecha de galleta en una única función rápida - aceptado por cualquier, incluso el viejo y extraño, navegadores - acepta absoluta & tiempo relativo:
import time
_weekdayname = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
_monthname = [None,
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
def cookie_date(epoch_seconds=None, future=0):
if not epoch_seconds:
epoch_seconds = time.time()
year, month, day, hh, mm, ss, wd, y, z = time.gmtime(epoch_seconds + future)
return "%s, %02d-%3s-%4d %02d:%02d:%02d GMT" % \
(_weekdayname[wd], day, _monthname[month], year, hh, mm, ss)
La función evolucionó de Cookie._getdate()
/http.cookies._getdate()
, que produce espacios en lugar de los convenientes -
's (está bien según RFC, pero no es reconocido por todos los navegadores). Esta función solo permite el cronometraje relativo y es una función no documentada. Sin embargo, puede ser utilizado por la función también indocumentado, que se puede dar segundos enteros para el campo expires en SimpleCookie
bocados, que luego son interpretadas relativa como segundos en el futuro/pasado (pero no flotan!):
cookie_morsel['expires'] = +3600 # 1h into future; 3600.0 doesn't work!
El time.strftime("%a, %d %b %Y %T GMT", t_expires)
de uso frecuente es cuestionable, porque depende de la configuración regional (% a,% d) y de una especificación de formato no documentada específica del sistema operativo (% T no se entiende en Windows, por ejemplo).
Puede simplemente establecer los campos 'expira' como número entero de segundos en el futuro/pasado. Float no funciona. Ver 'http.cookies._getdate()'/'Cookie._getdate()'. Parece que no está documentado. – kxr