Продвинутый курс разработки на Python
Глава
>
Уровень
Строковые и временные модули
Модуль даты/времени
Цель
Отрегулировать записи и установить даты доставки поставок с использованием функций модуля Даты и Времени.
Нижний этаж пристроя новой строительной площадки представляет собой склад, где находятся некоторые из недавно доставленных поставок, упакованные и готовые к отправке в районы вокруг нового строительства. Их необходимо промаркировать с правильными датами и временем, а также убедиться, что уже нанесенные метки содержат всю соответствующую информацию. Для этого мы могли бы потратить время на ручное написание и форматирование дат и времени, но существует гораздо более быстрый способ сделать это с помощью модуля даты и времени.
Модуль даты и времени импортируется посредством команды import datetime, что открывает доступ к ряду мощных функций, позволяющих считывать и устанавливать отформатированные времена и даты, которые затем можно сохранять в объектах. Вы также можете использовать: from datetime import timezone, timedelta для установки часовых поясов. Следующие функции становятся доступны после импорта модуля:
datetime.datetime(): Позволяет установить и сохранить время по вашему выбору, принимает несколько аргументов, таких как:year,month,day,hour,minute,second,microsecond,timezone. Вам не обязательно указывать все аргументы, только те, которые вы хотите использовать.datetime.datetime.now(): Возвращает вашу текущую дату и время, как они отображаются на часах.datetime.datetime.date(): Возвращает только дату, без времени.datetime.datetime.time(): Возвращает только время, без даты.datetime.datetime.timestamp(): Возвращает временную метку в формате UNIX.timezone(): Позволяет установить часовой пояс для использования с аргументами даты и времени.datetime.strftime(): Позволяет извлекать определенную информацию о дате и времени и форматировать ее по вашему выбору, используя специальные коды. Для наших целей мы будем использовать следующие коды:"%a": Краткое название дня недели"%d": День месяца"%B": Название месяца, полностью написанное"%I": Час (12-часовой формат)"%M": Минута"%p": Обозначение периода суток (AM/PM)"%x": Локальный формат даты"%X": Локальный формат времени"%j": День года"%U": Неделя года"%z": Часовой пояс UTC
Чтобы начать, пройдите к светлому X и поверните лицо к столу, используйте функцию read(), чтобы проверить даты упаковки для отправлений, а также начальные и конечные даты проектов. Обратите внимание на начальные и конечные даты, указанные в документе (месяц/день/год). Первые три (3) точки данных, записанные в записке, а также часовой пояс уже предустановлены в редакторе кода для удобства использования в последующих функциях.
На этом же участке создайте переменную с именем today и сохраните в ней значение, возвращаемое функцией datetime.datetime.now(). Используйте str(), чтобы преобразовать значение в строку, чтобы оно было читаемым, например: today = str(datetime.datetime.now()). Используйте функцию display(), чтобы записать сегодняшнюю дату в записку, таким образом устанавливается дата для распределения отправок, и вы можете начать добавлять недостающие точки данных в необходимые области.
Пройдите к золотому X рядом со столом, где мы будем вычислять и записывать количество дней, необходимое для выполнения данного проекта. В редакторе уже записаны две переменные с именами start и end, которые содержат даты и время. Запишите начальные и конечные даты, которые вы ранее прочитали, в отведенные для этого поля. Создайте переменную с именем result и сохраните в ней результат вычитания переменной start из переменной end. Используйте функцию str() для преобразования значения в читаемый строковый формат, например: result = str(end-start). Используйте функцию write(), чтобы записать значение переменной result, обозначая, сколько времени это займет.
Далее мы переходим к золотому X рядом с красным ковром и спускаемся к X, отмеченным рядом с ящиками на красном ковре в левой колонке. Здесь мы будем добавлять конкретные части дат упаковки, которые отсутствуют на ящиках, с использованием функции datetime(). В редакторе будет предустановлена дата, назначенная переменной red_date, из которой мы будем извлекать различные данные для маркировки ящиков.
Для красных ковров:
-
На золотом X, повёрнувшись к ящикам, создайте переменную с именем
red_days, в которую сохраните дату без времени, используя функциюdate()для переменнойred_dateи преобразуйте ее с помощьюstr(), например:red_days = str(red_date.date()). Используйте функциюwrite(), чтобы промаркировать ящики с помощьюred_days. -
На светлом X, повёрнувшись к ящикам, создайте переменную с именем
red_time, в которую сохраните время без даты, используя функциюtime()для переменнойred_dateи преобразуйте ее с помощьюstr(), например:red_time = str(red_date.time()). Используйте функциюwrite(), чтобы промаркировать ящики с помощьюred_time. -
На тёмном X, повёрнувшись к ящикам, создайте переменную с именем
red_timestamp, в которую сохраните временную метку, вычисленную из переменнойred_date, например:red_timestamp = red_date.timestamp(). Используйте функциюwrite(), чтобы промаркировать ящики с помощьюred_timestamp.
Затем перейдите к X, отмеченным перед ящиками на синем ковре. Как и ранее, имеется серия из трёх (3) цветных X, в данном случае ссылающихся на предустановленную переменную blue_date для завершения маркировки. Пройдите по колонке и используйте функцию strftime(), чтобы добавить недостающие элементы в маркировку отправлений. В отличие от предыдущих функций, эта требует использования конкретного кода для извлечения и форматирования элементов целевой даты. Например, если мы хотим получить день недели для переменной blue_date, вы используете код "%a" с функцией strftime(), например: blue_date.strftime("%a").
Для X, отмеченных рядом с ящиками на синем ковре, используйте функцию strftime() с требуемым кодом. Обратитесь к ранее приведенному списку кодов в зависимости от требований. Для синих ковров:
-
На золотом X, повёрнувшись к ящикам, создайте переменную с именем
blue_weekday, в которую сохраните день недели с использованием функцииstrftime()для переменнойblue_date, например:blue_day = blue_date.strftime("%a"). Создайте другую переменную с именемblue_dayи сохраните в нее день месяца с использованием функцииstrftime()для переменнойblue_date. Создайте еще одну переменную с именемblue_monthи сохраните в нее полное название месяца, используяstrftime()для переменнойblue_date. Вставьте переменныеblue_weekday,blue_dayиblue_monthв предустановленную функциюwrite(). -
На светлом X, повёрнувшись к ящикам, создайте переменную с именем
blue_hour, в которую сохраните час (12-часовой формат), используяstrftime()для переменнойblue_date. Создайте другую переменную с именемblue_minuteи сохраните в нее минуту с использованиемstrftime()для переменнойblue_date. Создайте еще одну переменную с именемblue_meridianи сохраните в нее обозначение периода суток AM/PM, используяstrftime()для переменнойblue_date. Вставьте переменныеblue_hour,blue_minuteиblue_meridianв предустановленную функциюwrite(). -
На тёмном X, повёрнувшись к ящикам, создайте переменную с именем
blue_local_date, в которую сохраните локальный формат даты, используяstrftime()для переменнойblue_date. Создайте другую переменную с именемblue_local_timeи сохраните в нее локальный формат времени, используяstrftime()для переменнойblue_date. Вставьте переменныеblue_local_date,blue_local_timeиblue_meridianв предустановленную функциюdisplay().
Наконец, мы перейдем к золотому X рядом с зеленым ковром и опустимся к X, отмеченным рядом с ящиками на зеленом ковре в правой колонке. Здесь мы продолжим добавлять конкретные части дат упаковки, которые отсутствуют на ящиках, с использованием функции strftime(). В редакторе будет предустановлена дата, назначенная переменной green_date, из которой мы будем извлекать различные данные для маркировки ящиков.
Для зеленых ковров:
-
На золотом X, повёрнувшись к ящикам, создайте переменную с именем
green_day, в которую сохраните день года с использованиемstrftime()для переменнойgreen_date. Используйте функциюwrite(), чтобы промаркировать ящики с помощьюgreen_day. -
На светлом X, повёрнувшись к ящикам, создайте переменную с именем
green_week, в которую сохраните неделю года с использованиемstrftime()для переменнойgreen_date. Используйте функциюwrite(), чтобы промаркировать ящики с помощьюgreen_week. -
На тёмном X, повёрнувшись к ящикам, создайте переменную с именем
green_timezone, в которую сохраните часовой пояс UTC с использованиемstrftime()для переменнойgreen_date. Используйте функциюwrite(), чтобы промаркировать ящики с помощьюgreen_timezone.
Как только все метки на X возле цветных ковров будут записаны, уровень будет завершен.