estoy usando las siguientes funciones:Python 3: fecha y hora a fecha y hora: ¿de dónde viene esta hora adicional?
# The epoch used in the datetime API.
EPOCH = datetime.datetime.fromtimestamp(0)
def timedelta_to_seconds(delta):
seconds = (delta.microseconds * 1e6) + delta.seconds + (delta.days * 86400)
seconds = abs(seconds)
return seconds
def datetime_to_timestamp(date, epoch=EPOCH):
# Ensure we deal with `datetime`s.
date = datetime.datetime.fromordinal(date.toordinal())
epoch = datetime.datetime.fromordinal(epoch.toordinal())
timedelta = date - epoch
timestamp = timedelta_to_seconds(timedelta)
return timestamp
def timestamp_to_datetime(timestamp, epoch=EPOCH):
# Ensure we deal with a `datetime`.
epoch = datetime.datetime.fromordinal(epoch.toordinal())
epoch_difference = timedelta_to_seconds(epoch - EPOCH)
adjusted_timestamp = timestamp - epoch_difference
date = datetime.datetime.fromtimestamp(adjusted_timestamp)
return date
Y ellos utilizando el código pasado:
twenty = datetime.datetime(2010, 4, 4)
print(twenty)
print(datetime_to_timestamp(twenty))
print(timestamp_to_datetime(datetime_to_timestamp(twenty)))
Y conseguir los siguientes resultados:
2010-04-04 00:00:00
1270339200.0
2010-04-04 01:00:00
por alguna razón, me Estoy obteniendo un adicional de hora en la última llamada, a pesar de que mi código no tiene defectos, por lo que puedo ver.
¿De dónde viene esta hora adicional?
¿Ya es hora de verano británico? – msw
@msw ¿Es eso una pista disfrazada sobre husos horarios? ...Comenzó hace aproximadamente una semana, pero no veo en qué parte de mi código maneja la información de la zona horaria o si actúa de forma ingenua en lugar de actuar de forma no ingenua. –
sí, eso fue una pista, ya que obtengo los mismos resultados y estoy a la luz del día también (en Python 2.6). Ahora estoy esperando la horrible operación datetime.tzinfo mientras espero que el mundo cambie a http://en.wikipedia.org/wiki/Swatch_Internet_Time – msw