Coding for KidsCoding for Kids
Poziomy KreatywneWyzwaniaPrzewodnik dla Nauczycieli
Głosuj na funkcje
Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Moduły ciągów i czasu
Moduł daty i czasu

Cel

Dostosuj rejestry i ustaw daty wysyłki dla zapasów, korzystając z funkcji modułu Data i Czas.

Niższe piętro aneksu nowej strefy budowlanej to magazyn, w którym znajdują się niektóre z niedawno dostarczonych zapasów, które zostały zapakowane i są gotowe do wysyłki do okolic nowej budowy. Muszą być oznakowane właściwymi datami i godzinami, a także upewnić się, że wszelkie już nałożone etykiety zawierają wszystkie istotne informacje. Aby to zrobić, moglibyśmy poświęcić czas na ręczne zapisywanie i formatowanie dat i czasu, ale istnieje znacznie szybszy sposób, używając modułu daty i czasu.

Moduł daty i czasu importuje się przez zapisanie import datetime, co odblokowuje szereg potężnych funkcji umożliwiających odczytywanie i ustawianie sformatowanych dat i czasów, które można przechowywać w obiektach. Możesz również użyć: from datetime import timezone, timedelta, aby ustawić strefy czasowe. Poniższe funkcje są dostępne po zaimportowaniu modułu:

  • datetime.datetime(): Umożliwia ustawienie i przechowywanie wybranego czasu, przyjmuje kilka argumentów, takich jak: year, month, day, hour, minute, second, microsecond, timezone. Nie musisz podawać wszystkich argumentów, a jedynie te, których chcesz użyć.
  • datetime.datetime.now(): Zwraca aktualną datę i czas, tak jakby wyglądał na zegarze.
  • datetime.datetime.date(): Zwraca tylko datę, bez czasu.
  • datetime.datetime.time(): Zwraca tylko czas, bez daty.
  • datetime.datetime.timestamp(): Zwraca znacznik czasu (timestamp) datetime w formacie UNIX.
  • timezone(): Umożliwia ustawienie strefy czasowej do wykorzystania z argumentami daty i czasu.
  • datetime.strftime(): Pozwala na wydobycie określonych informacji o dacie i czasie oraz ich formatowanie według własnych upodobań, przy użyciu określonych kodów. Dla naszych celów użyjemy następujących kodów:
    • "%a" : Dzień tygodnia, skrócony
    • "%d" : Dzień miesiąca
    • "%B" : Nazwa miesiąca, pełna
    • "%I" : Godzina, w systemie dwunastogodzinnym
    • "%M" : Minuta
    • "%p" : Określenie AM/PM
    • "%x" : Lokalny format daty
    • "%X" : Lokalny format czasu
    • "%j" : Dzień roku
    • "%U" : Tydzień roku
    • "%z" : Strefa czasowa UTC

Na początek przejdź do lekkiego znaku X i zwróć się w stronę biurka, użyj funkcji read() aby sprawdzić daty pakowania przesyłek oraz daty rozpoczęcia i zakończenia projektów. Zwróć uwagę na daty rozpoczęcia i zakończenia podane w dokumencie (miesiąc/dzień/rok). Pierwsze trzy (3) punkty danych zapisane w notatce, jak również strefa czasowa, są wstępnie zapisane w edytorze kodu, aby ułatwić wykorzystanie w późniejszych funkcjach.

W tym samym miejscu stwórz zmienną o nazwie today i przypisz do niej wartość zwracaną przez datetime.datetime.now(). Użyj funkcji str(), aby przekonwertować tę wartość na ciąg znaków w czytelnym formacie, na przykład: today = str(datetime.datetime.now()). Użyj funkcji display(), aby zapisać dzisiejszą datę w notatce; w ten sposób data dla przydziałów wysyłkowych zostanie ustalona i będziesz mógł dodawać brakujące punkty danych w odpowiednich miejscach.

Przejdź do złotego znaku X obok biurka; tutaj obliczymy i zapiszemy liczbę dni, które zajmie realizacja tego projektu. W edytorze znajdują się dwie zmienne o nazwach start i end, które przechowują wartości datetime. Zapisz daty rozpoczęcia i zakończenia, które wcześniej odczytałeś, w wyznaczonych miejscach. Utwórz zmienną o nazwie result i przypisz do niej wynik odejmowania zmiennej start od end. Użyj funkcji str(), aby przekonwertować tę wartość na czytelny ciąg znaków, na przykład: result = str(end-start). Użyj funkcji write(), aby zapisać zmienną result i zanotować, jak długo to potrwa.

Stamtąd przejdź do złotego znaku X obok czerwonego dywanu i kieruj się w dół do znaków X obok skrzyń z czerwonym dywanem w lewej kolumnie. Tutaj dodamy konkretne elementy dat pakowania, których brakuje na skrzyniach, używając datetime(). W edytorze przypisana jest wstępnie data do zmiennej red_date; będziemy wydobywać różne fragmenty danych i używać ich do oznaczania skrzyń.

Dla czerwonych dywanów:

  • Na złotym znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie red_days, w której przechowasz datę bez czasu, korzystając z date() na zmiennej red_date i przekonwertujesz ją za pomocą str(), na przykład: red_days = str(red_date.date()). Użyj funkcji write(), aby oznakować skrzynie za pomocą red_days.

  • Na lekkim znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie red_time, w której przechowasz czas bez daty, korzystając z time() na zmiennej red_date i przekonwertujesz ją za pomocą str(), na przykład: red_time = str(red_date.time()). Użyj funkcji write(), aby oznakować skrzynie za pomocą red_time.

  • Na ciemnym znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie red_timestamp, w której przechowasz znacznik czasu obliczony na podstawie zmiennej red_date, na przykład: red_timestamp = red_date.timestamp(). Użyj funkcji write(), aby oznakować skrzynie za pomocą red_timestamp.

Następnie przejdź do znaków X przed skrzyniami z niebieskim dywanem. Podobnie jak wcześniej, znajduje się seria trzech (3) kolorowych znaków X, tym razem odwołujących się do wstępnie zapisanej zmiennej blue_date, aby uzupełnić etykiety. Przejdź przez kolumnę i użyj funkcji strftime(), aby dodać brakujące elementy do etykiet wysyłkowych. W przeciwieństwie do poprzednich funkcji, w tej potrzeba specyficznego kodu, aby wydobyć i sformatować elementy docelowej daty. Na przykład, jeśli chcemy uzyskać dzień tygodnia dla zmiennej blue_date, użyjesz kodu "%a" z funkcją strftime(), tak jak to: blue_date.strftime("%a").

Dla znaków X obok skrzyń z niebieskim dywanem, użyj funkcji strftime() z odpowiednim kodem. Przejrzyj wcześniej wymienioną listę kodów w zależności od wymagań. Dla niebieskich dywanów:

  • Na złotym znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie blue_weekday, w której zapisz dzień tygodnia, korzystając z strftime() na zmiennej blue_date, na przykład: blue_day = blue_date.strftime("%a"). Utwórz kolejną zmienną o nazwie blue_day i zapisz w niej dzień miesiąca, korzystając z strftime() na zmiennej blue_date. Utwórz kolejną zmienną o nazwie blue_month i zapisz w niej pełną nazwę miesiąca, korzystając z strftime() na zmiennej blue_date. Wstaw zmienne blue_weekday, blue_day i blue_month do wstępnie zapisanej funkcji write().

  • Na lekkim znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie blue_hour, w której zapisz godzinę, w systemie dwunastogodzinnym, korzystając z strftime() na zmiennej blue_date. Utwórz kolejną zmienną o nazwie blue_minute i zapisz w niej minutę, korzystając z strftime() na zmiennej blue_date. Utwórz kolejną zmienną o nazwie blue_meridian i zapisz w niej oznaczenie AM/PM, korzystając z strftime() na zmiennej blue_date. Wstaw zmienne blue_hour, blue_minute i blue_meridian do wstępnie zapisanej funkcji write().

  • Na ciemnym znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie blue_local_date, w której zapisz lokalny format daty, korzystając z strftime() na zmiennej blue_date. Utwórz kolejną zmienną o nazwie blue_local_time i zapisz w niej lokalny format czasu, korzystając z strftime() na zmiennej blue_date. Wstaw zmienne blue_local_date, blue_local_time oraz blue_meridian do wstępnie zapisanej funkcji display().

Na koniec przejdź do złotego znaku X obok zielonego dywanu i kieruj się w dół do znaków X obok skrzyń z zielonym dywanem w prawej kolumnie. Tutaj będziemy kontynuować dodawanie konkretnych elementów dat pakowania, których brakuje na skrzyniach, używając strftime(). W edytorze przypisana jest wstępnie data do zmiennej green_date; będziemy wydobywać różne fragmenty danych i używać ich do oznakowania skrzyń.

Dla zielonych dywanów:

  • Na złotym znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie green_day, w której zapisz dzień roku, korzystając z strftime() na zmiennej green_date. Użyj funkcji write(), aby oznakować skrzynie za pomocą green_day.

  • Na lekkim znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie green_week, w której zapisz tydzień roku, korzystając z strftime() na zmiennej green_date. Użyj funkcji write(), aby oznakować skrzynie za pomocą green_week.

  • Na ciemnym znaku X, zwróć się w stronę skrzyń i utwórz zmienną o nazwie green_timezone, w której zapisz strefę czasową UTC, korzystając z strftime() na zmiennej green_date. Użyj funkcji write(), aby oznakować skrzynie za pomocą green_timezone.

Gdy wszystkie etykiety na znakach X obok kolorowych dywanów zostaną zanotowane, poziom zostanie ukończony.

Księga Kodów