Coding for KidsCoding for Kids
Творческие УровниИспытанияРуководство для Учителей
Голосовать за функции
Продвинутый курс разработки на 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 возле цветных ковров будут записаны, уровень будет завершен.

Книга Кода