Веб-версияОткрыть в Telegram

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

2 июня 2023
К
Коробка с питоном
Ссылка
нажмите — покажем
Я знаю на опыте, как иногда не удобно работать с датами и временем в Питоне. В стандартной библиотеке есть как и большое количество типов данных (date, time, tzinfo, timedelta, relativedelta, ...) так и куча модулей (datetime, time, calendar, dateutil, ...) которые помогают работать с ними. Но содержать в голове, да еще и уметь работать с ними иногда проблематично. Одна из библиотек, которая облегчает работу с сабжем - arrow. Давайте покажу на практике, насколько с ней удобно работать: 1) Получение времени Начнём с легкого - получим время по MSK и UTC: >>> arrow.now() # получаем текущее время по MSK 2023-06-02T18:46:55.188882+03:00 >>> arrow.utcnow() # а теперь текущее, но в UTC 2023-06-02T15:46:55.188882+00:00 А если нам надо текущее время с другой таимзоной? >>> arrow.get().to("US/Pacific") 2023-06-02T08:49:39.794355-07:00 Это было просто. А что если нам нужно спарсить время из шаблона? >>> arrow.get('2023/06-02|19:00:{00}', 'YYYY/MM-DD|HH:mm:{ss}') #обратите внимание на шаблон! 2023-06-02T19:00:00+00:00 Ещё arrow позволяет искать даты в строке по шаблону: >>>arrow.get('Он родился 16 Мая 2020 года', 'DD MMMM YYYY', locale="ru") 2020-05-16T00:00:00+00:00 2) Работа со временем Например, вот так можно заменить час в исходной дате: >>>arrow.now().replace(hour=12) 2023-06-02T12:00:29.180755+03:00 Или добавить к текущей дате +5 недель: >>>arrow.now().shift(weeks=+5) 2023-07-07T19:02:27.174819+03:00 Ну и в конце, давайте отформатируем текущее время в строку по шаблону: >>>arrow.now().format('YYYY HH:mm:ss MM/DD') 2023 19:05:04 06/02 3) Очеловечивание времени Возьмем задачу. Нам нужно сказать, через сколько мы прибудем домой. Делается это так: >>> start_time = arrow.now() >>> arrive_time = start_time.shift(hours=+3, minutes=10, seconds=12) >>> humanized = arrive_time.humanize(locale="ru", granularity=["hour", "minute", "second"]) >>> print(f"Вы прибудете домой {humanized}") Вы прибудете домой через 3 часа 10 минут 12 секунд А если мы хотим из человеческого формата перевести в машинночитаемый? >>> start_time.dehumanize(humanized, locale="ru") 2023-06-02T22:28:08.141525+03:00 4) Работа с диапазонами Как раз недавно решал следующую задачку: дается временной промежуток, для него нужно сделать почасовые интервалы. С arrow всё это делается вот так: start = datetime(2023, 1, 1, 00, 00) end = datetime(2023, 1, 1, 23, 00) for r in arrow.Arrow.span_range('hour', start, end): print(r) (<Arrow [2023-01-01T00:00:00+00:00]>, <Arrow [2023-01-01T00:59:59.999999+00:00]>) .... (<Arrow [2023-01-01T23:00:00+00:00]>, <Arrow [2023-01-01T23:59:59.999999+00:00]>) В любом случае, рекомендую присмотреться, возможно для вас эта библиотека станет одним еще довольно удобным инструментом! GitHub | Документация #библиотека
18 · 551 ·

Рядом в ленте

ККоробка с питономЕсли обычного itertools вам мало, то можно использовать more-itertools. Эта библиотека добавляет огромное количество функций для работы с итераторами. На практиККоробка с питономКак раз сегодня искал фреимворк для организации работы консьюмера RabbitMQ и на глаза попался Propan - декларативный фреимворк для работы с очередями сообщений.
это сообщение
ККоробка с питономЕсли у вас есть желание понять как работает asyncio, threading или multiprocessing, либо же появились вопросы - рекомендую обратить внимание на superfastpython.ККоробка с питономСоздание временных файлов В процессе написания скрипта может потребоваться создание временных файлов, которые будут удалены автоматически после завершения работ
ККоробка с питономКоробка с питоном@boxwithpython · канал · Технологии
488подписчиков154постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем