Софтуерно Инженерство
Loading...
+ Нов въпрос
supersane avatar supersane 233 Точки

[Python] ISO8601 datetime to UTC

Здравейте, имам следния въпрос към голямата задача, която правихме миналата седмица. На последното агрегиране на информация, където трябва да принтираме на конзолата топ 5 часове с най-голяма продажба. Трябва да сортираме датите само по-час ли, или цялата дата? Аз парсвам информацията в тип от iso8601, от този тип обаче не мога да вземам часове т.н. предполагам, че трябва да се парсва в тип datetime, като това ще става по следния начин. Първо да парснем в тимп iso8601, след това да конвертираме към UTC формат и след това конвертираното да го парснем в тип datetime. След това от този datetime, да взимаме часа и да го слагаме в един речник като ключ, а като стойност да прибавяме цената, и накрая сортираме речника по стойности и принтваме първите 5, но тогава ще имаме просто един час, а в примера е показана цяла. И един въпрос, който не го вмъкнах е как да стане това конвертиране от iso8601 в UTC?

Тагове:
0
Python
aslv1 avatar aslv1 304 Точки

Виж как го правя аз:

# current_time is the datetime of the current item

current_hour = datetime(
    year=current_time.year,
    month=current_time.month,
    day=current_time.day,
    hour=current_time.hour,
    tzinfo=current_time.tzinfo
)

Правя нов обект от тип datetime, който съдържа същите атрибути, но до часа - без минути, секунди и милисекунди.

А пък пърсването към UTC:

current_hour = current_hour.astimezone(timezone.utc)

Естествено, логиката ти ще си я направиш, не забравяй да включиш

from datetime import datetime, timezone
import iso8601

Последният пакет се инсталира с pip / pip3.

1
supersane avatar supersane 233 Точки

Благодаря за отговора ти. Това със парсването към UTC ми помогна много. Аз по подобен начин правих с новия обект от datetime, но недоразумението може би идва от условието на задачата, защото в твоя вариант също като моя, в речника си ти ще имаш множество ключове, защото дните, годините са различни. А в примера е дадено по по-различен начин. Аз утре като отида ще попитам как точно трябва да стане и ще пиша тук. :)

1
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Кое не е същото в примера? И там е с години, месеци и дни. Става въпрос за това в кой час, от кой ден, от кой месец от коя година има най-много продажби.

В случая между 20 и 21ч на 20ти Февруари 2016та има най-голяма сума продажби. Няма други 60 минути в които да има повече.

0
supersane avatar supersane 233 Точки

Прав си, може би ме бъркаше факта, че деня, месеца и годината са еднакви.

0