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" : 午前/午後
    • "%x" : ローカルの日付フォーマット
    • "%X" : ローカルの時刻フォーマット
    • "%j" : 西暦通算日
    • "%U" : その年の週
    • "%z" : UTCタイムゾーン

最初に、明るいXマークの方へ歩いて行き、机に向かって、read() 関数を使用して出荷用の梱包日付とプロジェクトの開始日および終了日を確認してください。文書に記載されている開始日と終了日(月/日/年)に注意してください。メモに記載された最初の3つのデータポイントとタイムゾーンは、後で使いやすいようにコードエディタにあらかじめ記述されています。

同じ場所で、today という名前の変数を作成し、datetime.datetime.now() の返り値を格納します。str() を使用して値を文字列に変換し、読みやすい形式にしてください。例えば、次のように記述します: today = str(datetime.datetime.now())。その後、display() 関数を使用して今日の日付をメモに記録します。これにより、出荷割り当ての日付が設定され、不足しているデータポイントを必要な箇所に追加できるようになります。

机の隣にある金色のXマークに向かい、続いてこのプロジェクトにかかる日数を計算し、記録します。エディタには startend という2つの変数があらかじめ記述され、日時が格納されています。先に確認した開始日と終了日を指定された箇所に記入してください。次に、result という名前の変数を作成し、endstart の引き算の結果を格納します。str() 関数を使用して値を読みやすい文字列形式に変換し、例えば次のように記述します: result = str(end-start)。最後に、write() 関数を使用して result 変数を書き込み、この作業にかかる期間を記録します。

ここから、赤いカーペットの隣にある金色のXマークに移動し、左側の列にある赤いカーペット用クレートの隣のXマークへ向かいます。ここでは、datetime() を使用して、クレートに不足している梱包日付の特定の部分を追加します。エディタには red_date という変数にあらかじめ割り当てられた日付があり、その日付から様々なデータを抽出してクレートにラベルを付けます。

赤いカーペットの場合:

  • 金色のXマークでは、クレートに向かって red_days という名前の変数を作成し、red_date 変数の date() を使用して時刻を除いた日付を取得し、str() を使って変換します。例えば、red_days = str(red_date.date()) と記述します。その後、write() 関数を使用して red_days を用い、クレートにラベルを付けます。

  • 明るいXマークでは、クレートに向かって red_time という名前の変数を作成し、red_date 変数の time() を使用して日付を除いた時刻を取得し、str() を用いて変換します。例えば、red_time = str(red_date.time()) と記述します。その後、write() 関数を使用して red_time を用い、クレートにラベルを付けます。

  • 暗いXマークでは、クレートに向かって red_timestamp という名前の変数を作成し、red_date 変数から計算されたタイムスタンプを格納します。例えば、red_timestamp = red_date.timestamp() と記述します。その後、write() 関数を使用して red_timestamp を用い、クレートにラベルを付けます。

次に、青いカーペットのクレートの前にあるXマークに移動します。こちらも先と同様に、あらかじめ記述された blue_date 変数を参照して3つのカラフルなXマークがあります。列を順に進み、strftime() 関数を使用して出荷ラベルに不足している要素を追加します。この関数は、ターゲットの日付から要素を抽出しフォーマットするために特定のコードが必要です。例えば、blue_date 変数の曜日を取得するには、"%a" のコードを strftime() 関数と共に使用し、次のように記述します: blue_date.strftime("%a")

青いカーペットの場合、青いクレートの横のXマークについては、必要な特定のコードを用いて strftime() 関数を使用してください。要件に応じて、先に示したコード一覧を参照してください。

  • 金色のXマークでは、クレートに向かって blue_weekday という名前の変数を作成し、blue_date 変数の strftime() を使用して曜日を取得します。例えば、blue_day = blue_date.strftime("%a") と記述します。その後、blue_day という名前の変数を作成して、blue_date 変数から strftime() を使用して月の日を取得します。さらに、blue_month という名前の変数を作成し、blue_date 変数の strftime() を使用して**月名(フル表記)**を取得します。あらかじめ記述された write() 関数に blue_weekdayblue_dayblue_month の各変数を挿入してください。

  • 明るいXマークでは、クレートに向かって blue_hour という名前の変数を作成し、blue_date 変数の strftime() を使用して時間(12時間制)を取得します。さらに、blue_minute という名前の変数を作成し、blue_date 変数の strftime() を使用してを取得します。さらに、blue_meridian という名前の変数を作成し、blue_date 変数の strftime() を使用して午前/午後を取得します。あらかじめ記述された write() 関数に blue_hourblue_minuteblue_meridian の各変数を挿入してください。

  • 暗いXマークでは、クレートに向かって blue_local_date という名前の変数を作成し、blue_date 変数の strftime() を使用してローカルの日付フォーマットを取得します。さらに、blue_local_time という名前の変数を作成し、blue_date 変数の strftime() を使用してローカルの時刻フォーマットを取得します。あらかじめ記述された display() 関数に blue_local_dateblue_local_time、および blue_meridian の各変数を挿入してください。

最後に、緑のカーペットの横にある金色のXマークに移動し、右側の列にある緑のカーペット用クレートの隣のXマークに向かいます。ここでは、strftime() を使用して、クレートに不足している特定の梱包日付の部分を追加し続けます。エディタには green_date という変数にあらかじめ日付が割り当てられており、その日付から様々なデータを抽出してクレートにラベルを付けます。

緑のカーペットの場合:

  • 金色のXマークでは、クレートに向かって green_day という名前の変数を作成し、green_date 変数の strftime() を使用して西暦通算日を取得します。write() 関数を使用して green_day を用い、クレートにラベルを付けます。

  • 明るいXマークでは、クレートに向かって green_week という名前の変数を作成し、green_date 変数の strftime() を使用してその年の週を取得します。write() 関数を使用して green_week を用い、クレートにラベルを付けます。

  • 暗いXマークでは、クレートに向かって green_timezone という名前の変数を作成し、green_date 変数の strftime() を使用してUTCタイムゾーンを取得します。write() 関数を使用して green_timezone を用い、クレートにラベルを付けます。

すべてのカラフルなカーペット横のXマークにラベルが記録されれば、このレベルは完了となります。

コードブック