Tôi đang sử dụng các chức năng sau:Python 3: dấu thời gian để datetime: thời gian bổ sung này đến từ đâu?
# 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
Và việc sử dụng chúng với mã thông qua:
twenty = datetime.datetime(2010, 4, 4)
print(twenty)
print(datetime_to_timestamp(twenty))
print(timestamp_to_datetime(datetime_to_timestamp(twenty)))
Và nhận được kết quả như sau:
2010-04-04 00:00:00
1270339200.0
2010-04-04 01:00:00
Đối với một số lý do, tôi đang nhận được thêm thêm giờ trong cuộc gọi cuối cùng, mặc dù mã của tôi có, theo như tôi thấy, không có lỗi.
Giờ bổ sung này đến từ đâu?
Đã đến giờ mùa hè ở Anh chưa? – msw
@msw Đó có phải là gợi ý cải trang về múi giờ không? ...Nó đã bắt đầu khoảng một tuần trước, nhưng tôi không nhìn thấy nơi trong mã của tôi nó xử lý các thông tin múi giờ hoặc hành vi ngây thơ như trái ngược với hành động không ngây thơ? –
có, đó là một gợi ý, khi tôi nhận được kết quả tương tự và sáng vào ban ngày quá (trong Python 2.6). Bây giờ tôi đang nghiền ngẫm thông qua hoạt động datetime.tzinfo thần khủng khiếp trong khi tôi chờ thế giới chuyển sang http://en.wikipedia.org/wiki/Swatch_Internet_Time – msw