Набор инструментов wxPython содержит собственные средства для установки даты и времени. В большинстве случаев вы можете просто использовать Python datetime и временные модули и всё будет нормально. Но вдруг вы обнаруживаете, что вам нужно конвертировать объекты wx.DateTime в объекты Python datetime. Вы можете столкнуться с этим во время использования виджета wx.DatePickerCtrl.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
К счастью, модуль календаря wxPython имеет несколько вспомогательных функций, которые упростят конвертацию объектов даты и времени между wxPython и Python, причём в обоих направлениях.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
def _pydate2wxdate(date): import datetime assert isinstance(date, (datetime.datetime, datetime.date)) tt = date.timetuple() dmy = (tt[2], tt[1]-1, tt[0]) return wx.DateTimeFromDMY(*dmy) def _wxdate2pydate(date): import datetime assert isinstance(date, wx.DateTime) if date.IsValid(): ymd = map(int, date.FormatISODate().split('-')) return datetime.date(*ymd) else: return None |
Вы можете использовать эти удобные функции в своём коде, чтобы упростить конвертацию. Я бы применял их в скриптах контроллеров или утилит. Также я значительно переработал данный код, чтобы мне больше не пришлось импортировать модуль даты и времени Python внутри самих функций. Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import datetime import wx def pydate2wxdate(date): assert isinstance(date, (datetime.datetime, datetime.date)) tt = date.timetuple() dmy = (tt[2], tt[1]-1, tt[0]) return wx.DateTimeFromDMY(*dmy) def wxdate2pydate(date): assert isinstance(date, wx.DateTime) if date.IsValid(): ymd = map(int, date.FormatISODate().split('-')) return datetime.date(*ymd) else: return None |
Это делает конвертирование из формата datetime Python в формат даты времени wxWidgets невероятно простым.
Итоги
Как я уже отметил в начале, в большинстве случаев вам не нужно обращать внимание на конвертацию времени или даты во время использования набора инструментов wxPython. Но, если вы вдруг используете один из виджетов Python для даты и времени, то знание данного просто кода может очень сильно вам пригодится. В качестве замечания, я также хотел бы отметить, что некоторые базы данных иногда имеет собственный формат даты и времени, так что эти знания могут оказаться крайне полезными для вас.
Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.
E-mail: vasile.buldumac@ati.utm.md
Образование
Universitatea Tehnică a Moldovei (utm.md)
- 2014 — 2018 Технический Университет Молдовы, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Технический Университет Молдовы, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»