Ошибка при преобразовании даты и времени в эпоху, добавьте 5 секунд, а затем выполните преобразование обратно в дату и время - PullRequest
0 голосов
/ 03 апреля 2019

У меня проблема с получением времени строки в CSV-файле для преобразования в эпоху внутри Python. То, что я пытаюсь сделать в долгосрочной перспективе, это получить дату и время из csv, преобразовать в эпоху, добавить 5 секунд, преобразовать обратно в datetime, а затем использовать его как новую переменную.

Однако любой метод, который я пробую, просто возвращает ошибку форматирования ....

ValueError: time data '"2019-04-03 09:01:14.000000"' does not match format '%Y-%m-%d %I:%M:%S.%f'

Любая помощь приветствуется.

Я опробовал datetime.datetime, используя calander и т. Д. Все возвращают ошибку формата, но я не могу расшифровать, в каком формате это происходит.

Вот весь код. Аутовский комментарий - это то, где я пытаюсь перейти с кодом в будущем. (Формат CSV: дата / время, IP, электронная почта, сообщение, электронная почта)

import datetime, re, time
_global_path = r'C:\Users\DArthur\Documents\ITD Metrics'

with open(_global_path + '/eop_incidents.csv', 'r') as f:
    pattern = '%Y-%m-%d %I:%M:%S.%f'
    find_last = (f.readlines()[-1].strip().split(','))
    net_earliest = find_last[0]  # .replace(':', '-')
    #change_to_epoch = int(time.mktime(time.strptime(net_earliest, pattern)))


    #temp = change_to_epoch + 5
    #temp = datetime.datetime.utcfromtimestamp(temp).strftime(pattern)
    #final_earliest = str(temp)


print(pattern)
#print(find_last)
print(net_earliest, type(net_earliest))
#print(change_to_epoch)



#print(temp, type(temp))
#print(final_earliest, type(final_earliest))

Это результаты, которые я получаю (отредактировано по соображениям безопасности, извините.)

% Y-% m-% d% I:% M:% S.% f

['"2019-04-03 09: 01: 14.000000", "IP", "EMAIL", "MSG", "EMAIL" »] "2019-04-03 09: 01: 14.000000"

Что я ищу, так это 2019-04-03 09: 01: 14.000000 до «эпохи» до 2019-04-03 09: 01: 18.000000.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вам нужно превратить строку в кортеж datetime, а затем добавить timedelta к оригинальному времени.Например:

#original string
string_time='2019-04-03 09:01:14.000000'

#Conversion
tm = datetime.datetime.strptime((string_time),  '%Y-%m-%d %H:%M:%S.%f')

#Add the timedelta
future_or_past_time = tm + datetime.timedelta(seconds=4)

print future_or_past_time
>>> 2019-04-03 09:01:18

Где в этом случае добавляемая временная дельта может быть в секундах, часах, днях и т. Д.

Надеюсь, что это поможет.

0 голосов
/ 03 апреля 2019

Для всех, кто еще просматривал, я обнаружил проблему с форматированием.

Проблема была внутри CSV-файла.Он возвращал формат «2019-04-03 09: 01: 14.000000».Нужно было следующее: '2019-04-03 09: 01: 14.000000'.

Примечание. При форматировании не упустите двойные кавычки ...:)

...