Coding for KidsCoding for Kids
Креативні РівніВикликиПосібник для Вчителів
Голосувати за функції
Поглиблений курс розробки на Python
Розділ
>
Рівень

Модулі рядків та часу
Модуль дати/часу

Мета

Відкоригуйте записи та встановіть дати відправлення постачань за допомогою функцій модуля Date & Time.

Нижній поверх анексу в новій будівельній зоні — це склад, де зберігаються деякі з нещодавно доставлених постачань, які вже упаковані та готові до відправлення у райони навколо нової будівлі. Їх потрібно маркувати з правильними датами та часом, а також переконатися, що всі вже наклеєні етикетки містять всю необхідну інформацію. Для цього можна було б витратити час на ручне написання та форматування дат і часу, але існує набагато швидший спосіб зробити це за допомогою модуля date and time.

Модуль date and time імпортується наступним рядком: 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.datetime.time(): Повертає лише час з datetime, без дати.
  • datetime.datetime.timestamp(): Повертає часову мітку datetime у вигляді коду 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, які зберігають datetime. Запишіть дати початку та завершення, які ви раніше зчитали, у надані простори. Створіть змінну з назвою 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) кольорових позначок, у цьому випадку використовуючи попередньо записану змінну 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 поруч із різнокольоровими килимами будуть записані, рівень буде завершено.

Книга Коду