Преобразование метки времени Python UTC в и из строки - PullRequest
0 голосов
/ 06 декабря 2018

Вот фрагмент кода Python, который принимает текущее время (в UTC), преобразует его в форматированную строку и анализирует строку.Я хотел бы получить ту же самую метку времени, но я получаю другую метку времени из-за часового пояса, в котором я нахожусь.

Как я могу восстановить ту же самую метку времени, с которой я начал?

#!/usr/bin/env python3  
import time
from datetime import datetime
TIME_FORMAT='%Y-%m-%d %H:%M:%S'
ts = int(time.time()) # UTC timestamp
timestamp = datetime.utcfromtimestamp(ts).strftime(TIME_FORMAT)
d1 = datetime.strptime(timestamp, TIME_FORMAT)
ts1 = int(d1.strftime("%s"))
print("Time as string : %s" % d1)
print("Source timestamp : %d" % ts)
print("Parsed timestamp : %d" % ts1)

Вывод:

Time as string : 2018-12-06 00:47:32
Source timestamp : 1544057252
Parsed timestamp : 1544086052

1 Ответ

0 голосов
/ 06 декабря 2018

В строке не указан часовой пояс, поэтому он считается не UTC, а вашим личным часовым поясом.Чтобы решить эту проблему, вы должны указать строку UTC при разборе, например:

d1 = datetime.strptime(timestamp + "+0000", TIME_FORMAT + '%z')
ts1 = d1.timestamp()

Полный рабочий фрагмент:

#!/usr/bin/env python3
import time
from datetime import datetime
TIME_FORMAT='%Y-%m-%d %H:%M:%S'
ts = int(time.time()) # UTC timestamp
timestamp = datetime.utcfromtimestamp(ts).strftime(TIME_FORMAT)
d1 = datetime.strptime(timestamp + "+0000", TIME_FORMAT + '%z')
ts1 = d1.timestamp()
print("Time as string : %s" % d1)
print("Source timestamp : %d" % ts)
print("Parsed timestamp : %d" % ts1)

+0000 соответствует смещению utc.

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