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

У меня есть отметка времени эпохи Unix в миллисекундах, и мне нужно получить строку даты по местному времени.

Это мой код:

date = datetime.utcfromtimestamp(timestamp / 1000).strftime('%d-%m-%Y')
hour = datetime.utcfromtimestamp(timestamp / 1000).strftime('%H')
month = datetime.utcfromtimestamp(timestamp / 1000).strftime('%m')
monthName = calendar.month_name[int(month)]
weekDay = calendar.day_name[(datetime.strptime(date, '%d-%m-%Y')).weekday()]

Исходная отметка времени и полученная дата, часи все другие значения, сгенерированные из вышеуказанных функций, указаны в UTC.Как я могу изменить свой код, чтобы получить его по местному времени?

1 Ответ

0 голосов
/ 23 сентября 2018

Чтобы преобразовать метку времени UTC в миллисекунду с учетом часового пояса datetime, вы можете выполнить:

Код:

def tz_from_utc_ms_ts(utc_ms_ts, tz_info):
    """Given millisecond utc timestamp and a timezone return dateime

    :param utc_ms_ts: Unix UTC timestamp in milliseconds
    :param tz_info: timezone info
    :return: timezone aware datetime
    """
    # convert from time stamp to datetime
    utc_datetime = dt.datetime.utcfromtimestamp(utc_ms_ts / 1000.)

    # set the timezone to UTC, and then convert to desired timezone
    return utc_datetime.replace(tzinfo=pytz.timezone('UTC')).astimezone(tz_info)

Код теста:

import datetime as dt
import pytz

utc_ts = 1537654589000
utc_time = "Sat Sep 22 22:16:29 2018 UTC"
pdt_time = "Sat Sep 22 15:16:29 2018 PDT"

tz_dt = tz_from_utc_ms_ts(utc_ts, pytz.timezone('America/Los_Angeles'))

print(tz_dt)
print(tz_dt.strftime('%d-%m-%Y'))

Результаты:

2018-09-22 15:16:29-07:00
22-09-2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...