Loading...
supersane avatar supersane 234 Точки

[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 234 Точки

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

1
RoYaL avatar RoYaL Trainer 6849 Точки

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

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

0
supersane avatar supersane 234 Точки

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

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.