[Редактирано след предложението в коментарите]
Използване на Ben Alpert's отговор на Как мога да конвертирам обект datetime в милисекунди от епохата (unix време) в Python можем да направим следното:
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)
връща:
1435371005653
което е еквивалентно на:събота, 27 юни 2015 г. 02:10:05 GMT (както се очаква)
Можем също да използваме .strftime('%s')
на datetime за да получите unix време, дори милисекунди, като използвате следното (но това не се препоръчва ):
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)
връща:
1435396205653
еквивалентно на:събота, 27 юни 2015 г. 09:10:05 GMT (на моя Mac в Сан Диего; Забележка :това е 7 часа почивка от това, което може би очаквахме).
Причината за грешката е описана от J.F. Sebastian в коментарите на връзката по-горе и в това отговор относно .strftime('%s')
поведение. J.F. Sebastian посочва, че „не се поддържа, не е преносим, може тихо да произведе грешен резултат за обект на дата и час, не успява, ако въвеждането е в UTC (както във въпроса), но местната часова зона не е UTC“