какие-нибудь быстрые способы получить время и преобразовать в метку времени? - PullRequest
0 голосов
/ 18 октября 2018

Какие-нибудь быстрые способы получить время и преобразовать его в метку времени?

string="2018-10-17 12:31:46 UTC::@:[2771]:LOG: checkpoint starting: time"

Я могу использовать split, чтобы получить первые 4

>>> string.split(":")[:3]
['2018-10-17 12', '31', '46 UTC']

Но как объединить их обратнов строку времени и преобразовать в метку времени?

Обновление

@ jezrael Используйте ваше решение, я конвертирую его в метку времени, но, похоже, время смещено.

>>> date = parser.parse(':'.join(string.split(":")[:3]))
>>> print(date)
2018-10-17 12:31:46+00:00
>>> timestamp = int(round(time.mktime(date.timetuple()) * 1000))
>>> print(timestamp)
1539743506000

Я использовал приведенные ниже коды для загрузки журналов в cloudwatch, он использовал дату / время, которые я получил из строки журнала.

 logs = boto3.client('logs')

 date = parser.parse(':'.join(string.split(":")[:3]))
 timestamp = int(round(time.mktime(date.timetuple()) * 1000))
 event_response = logs.put_log_events(
    logGroupName=LOG_GROUP,
    logStreamName=LOG_STREAM,
    logEvents=[{
        'timestamp': timestamp,
        'message': string
    }],
    sequenceToken=str(next_sequence_token))

Дата с реальными журналами в coudwatch отличается:

enter image description here

Обновление # 2

Наконец я сделал с кодами ниже, для этого нужен Python v3.3 +

$ python3
Python 3.7.0 (default, Oct  4 2018, 14:10:21)
[Clang 10.0.0 (clang-1000.10.44.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from dateutil import parser
>>> string="2018-10-17 12:31:46 UTC::@:[2771]:LOG: checkpoint starting: time"
>>> date = parser.parse(':'.join(string.split(":")[:3]))
>>> timestamp = int(round(date.timestamp() * 1000))
>>> print(timestamp)
1539779506000

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

для меня простой способ делится на UTC:: и использовать парсер из dateutil :

from dateutil import parser
string="2018-10-17 12:31:46 UTC::@:[2771]:LOG: checkpoint starting: time"
parser.parse(string.split(' UTC::')[0])

результат равен

datetime.datetime(2018, 10, 17, 12, 31, 46)
0 голосов
/ 18 октября 2018

Мы можем использовать join с parser модулем.

from dateutil import parser

string="2018-10-17 12:31:46 UTC::@:[2771]:LOG: checkpoint starting: time"

date = parser.parse(':'.join(string.split(":")[:3]))
print (date)
2018-10-17 12:31:46+00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...