Ich verwende die folgenden Funktionen:Python 3: Zeitstempel bis datetime: Woher kommt diese zusätzliche Stunde?
# 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
Und sie mit dem übergebenen Code verwendet:
twenty = datetime.datetime(2010, 4, 4)
print(twenty)
print(datetime_to_timestamp(twenty))
print(timestamp_to_datetime(datetime_to_timestamp(twenty)))
und die folgenden Ergebnisse erhalten:
2010-04-04 00:00:00
1270339200.0
2010-04-04 01:00:00
Aus irgendeinem Grund ich Ich bekomme eine zusätzliche Stunde im letzten Anruf hinzugefügt, trotz meines Codes, soweit ich sehen kann, keine Mängel.
Woher kommt diese zusätzliche Stunde?
Ist es schon britische Sommerzeit? – msw
@msw Ist das ein versteckter Hinweis über Zeitzonen? ...Es hat vor ungefähr einer Woche angefangen, aber ich sehe nicht, wo in meinem Code es die Informationen der Zeitzone handhabt oder sich naiv verhält, anstatt sich naiv zu verhalten? –
ja, das war ein Hinweis, da ich die gleichen Ergebnisse bekomme und auch bei Tageslicht bin (in Python 2.6). Ich bin jetzt durch die gottverdammte datetime.tzinfo-Operation, während ich darauf warte, dass die Welt auf http://en.wikipedia.org/wiki/Swatch_Internet_Time umschaltet. – msw