[Đã chỉnh sửa gợi ý sau trong phần nhận xét]
Sử dụng Ben Alpert's câu trả lời cho Làm cách nào để chuyển đổi đối tượng datetime thành mili giây kể từ kỷ nguyên (thời gian unix) trong Python chúng ta có thể làm như sau:
from datetime import datetime
def unix_time(dt):
epoch = datetime.utcfromtimestamp(0)
delta = dt - epoch
return delta.total_seconds()
def unix_time_millis(dt):
return int(unix_time(dt) * 1000)
a = datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ")
unix_time_millis(a)
lợi nhuận:
1435371005653
tương đương với: Thứ Bảy, ngày 27 tháng 6 năm 2015 02:10:05 GMT (như mong đợi)
Chúng tôi cũng có thể sử dụng .strftime('%s')
của datetime để có được thời gian unix, thậm chí mili giây bằng cách sử dụng cách sau ( nhưng điều này không được khuyên dùng ):
from decimal import Decimal
int(Decimal(datetime.strptime("2015-06-27T02:10:05.653000Z", "%Y-%m-%dT%H:%M:%S.%fZ").strftime('%s.%f'))*1000)
lợi nhuận:
1435396205653
tương đương với: Thứ Bảy, ngày 27 tháng 6 năm 2015 09:10:05 GMT (trên máy mac của tôi ở San Diego; Lưu ý :đây là 7 giờ giảm giá mà chúng tôi có thể mong đợi).
Nguyên nhân của lỗi được J.F. Sebastian mô tả trong các nhận xét của liên kết ở trên và trong điều này câu trả lời về .strftime('%s')
hành vi. J.F. Sebastian chỉ ra rằng "nó không được hỗ trợ, nó không di động, nó có thể âm thầm tạo ra kết quả sai cho một đối tượng datetime nhận biết, nó không thành công nếu đầu vào là UTC (như trong câu hỏi) nhưng múi giờ cục bộ không phải là UTC"