Не удалось преобразовать дату и время в эпоху миллисекунд - PullRequest
0 голосов
/ 11 мая 2018
2018-03-09T09:00:00.687294374+08

Это данные о дате и времени, которые я получил от TRTH («История тиков Thomson Reuters») для Гонконга. Я хочу преобразовать его в время эпохи, но я не могу этого сделать из-за его высокой точности. Я знаю только, как преобразовать время даты в секундах с точностью до времени эпохи, что можно сделать с помощью следующего кода

import time
datetime = '15.07.2011 16:02:09'
pattern = '%d.%m.%Y %H:%M:%S'
epoch = int(time.mktime(time.strptime(datetime, pattern)))
print epoch

Но я не знаю, как преобразовать данные, которые у меня есть. Пожалуйста, помогите.

РЕДАКТИРОВАТЬ 1: я узнал, что время в Гонконге UTC + 8, так что +08 для него, так что я могу удалить это, а затем строка, оставшаяся для преобразования в эпоху

2018-03-09T09:00:00.687294374

1 Ответ

0 голосов
/ 26 июня 2018

Datetime с наносекундами невозможно, только микросекунды. Возможно, вы можете попробовать следующее (с Python 3):

from datetime import datetime, timezone
s = '2018-03-09T09:00:00.687294374'  # your string
dt = datetime.strptime(s[:-3], '%Y-%m-%dT%H:%M:%S.%f')  # removing the nanoseconds
timestamp = dt.replace(tzinfo=timezone.utc).timestamp() # get POSIX timestamp 
print(timestamp)

1520586000.687294

Документация: datetime.time & datetime.timestamp ()

Пожалуйста, проверьте:

1) Преобразование даты и времени в UTC в Python

2) Разбор строк времени и даты, содержащих наносекунды

И, возможно, это возможно в Python 3.7: PEP 564 - Добавить новые функции времени с наносекундным разрешением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...