Преобразование даты и времени в UTC к локальному времени Python
Возник такой вопрос: как в питоне реализовать преобразование даты времени в UTC к локальному времени? Например, начальный вид даты такой:
04.02.2020 22:00
04.02.2020 19:00
04.02.2020 16:00
04.02.2020 13:00
04.02.2020 10:00
04.02.2020 07:00
04.02.2020 04:00
04.02.2020 01:00
03.02.2020 22:00
03.02.2020 19:00
03.02.2020 16:00
03.02.2020 13:00
03.02.2020 10:00
03.02.2020 07:00
03.02.2020 04:00
03.02.2020 01:00
Результат преобразования должен быть следующий:
22
19
16
13
10
7
4
1
-2
-5
-8
-11
-14
-17
-20
-23
В Excel это делается легко с помощью формулы: =(A1-"04.02.2020 00:00:00")*24, где A1, ячейка с соответствующей датой в столбце. Нужно этот процесс автоматизировать. Смотрел в сторону библиотеки datetime, timedelta, но не получилось это реализовать. Что можете посоветовать?
Ответы (1 шт):
Не уверен, что это самое короткое решение, но оно работает.
Пример в рамках одного дня. Таким же способом можно сопоставлять дату, чтобы получить значения с разницей в 2 и более дней.
Если Вам необходимо получить именно часы - воспользуйтесь модулем time и не сложными расчётами.
import time
z = '04.02.2020 07:00'
timeZ = z.split() #Разбиваем строку на дату и время
Ntime = timeZ[1].split(':') #Время разбиваем на часы и минуты
zmins = ((int(Ntime[0]) * 60) + int(Ntime[1])) * 60 #Приводим к численному значению строки и переводим всё в секунды.
nnn = ((int(time.strftime("%H")) * 60) + int(time.strftime("%M"))) * 60 #Получаем текущее время, приводим к числу и переводим в секунды.
if int(Ntime[0]) < int(time.strftime("%H")): # Если часы в дате меньше часов в текущей дате, то выполняем действие
difftimeM = ((nnn - zmins) // 60) # От текущей даты в секундах отнимаем дату из параметра и делим на количество минут без остатка
difftimeH = -24 - (difftimeM // 60) # От 24 часов отнимаем разницу в часах
NewDate = str(difftimeH) #Переводим в строку
else:
difftimeM = ((nnn - zmins) // 60)
difftimeH = -(difftimeM // 60)
NewDate = str(difftimeH)
print(NewDate)
Текущее время 8:30
При параметре z = '04.02.2020 10:00'
Результат:
2
При параметре z = '04.02.2020 02:00'
Результат:
-30