Python Date Time дает неверное значение - PullRequest
0 голосов
/ 08 мая 2019

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

import datetime
import time
print(datetime.datetime.fromtimestamp(time.mktime(time.strptime("20170312025709", "%Y%m%d%H%M%S"))))

Предполагается вернуть "2017-03-12 02:57:09" ## но это даст "2017-03-12 03:57:09"

чтоможет быть причиной.Я использую python3.

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Это вопрос с подвохом. переход на летнее время 2017 .

import datetime
import time

for hour in range(25):
    time_str = "20170312" + str(hour).zfill(2) + "5709"
    print(
        datetime.datetime.fromtimestamp(
            time.mktime(time.strptime(time_str, "%Y%m%d%H%M%S"))))

Запустите это, и в конце вы увидите ошибку (в этом часовом поясе по умолчанию в вашей системе было только 23 часа).

0 голосов
/ 08 мая 2019

Ваш код отлично работает на моем компьютере (GMT + 8)

Результаты:

>>> import datetime
>>> import time
>>> print(datetime.datetime.fromtimestamp(time.mktime(time.strptime("20170312025709", "%Y%m%d%H%M%S"))))

2017-03-12 02:57:09

Возможно, вы захотите проверить свое местное время.Или что-то связанное с переходом на летнее время.

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