Python - 日付と時刻

こんにちは、未来のPythonの魔法使いたち!今日、私たちはPythonの日付と時刻の魔法の世界に旅立ちます。あなたの親しみのある近所のコンピュータ先生として、この冒険を案内することができて光栄です。だから、仮想の杖(キーボード)を握りしましょう。それでは、いきます!

Python - Date & Time

ティックインターバルとは?

日付と時刻の操作を始める前に、基本的な概念を理解しましょう:ティックインターバルです。コンピュータの世界では、時間はしばしばティックで計測されます。でも、ティックとは具体的に何でしょうか?

ティックは、あなたのコンピュータの心臓の鼓動のようなものです。それは、あなたのコンピュータのクロックが計測できる最小の時間単位です。Pythonでは、ティックを1970年1月1日午前0時0分0秒UTCからの秒数として計測します。この時点は「エポック」と呼ばれます。

現在のティック値を取得する方法を見てみましょう:

import time

ticks = time.time()
print("現在のティック値:", ticks)

このコードを実行すると、大きな数が表示されます。それはエポックからの秒数です。すごくクールでしょう?

TimeTupleとは?

次に、TimeTupleについて話しましょう。それは新しいダンスのモーション(と聞こえますが)、Pythonが時間を表現する方法の一つです。

TimeTupleは、時間の異なる側面を表す9つの要素を含むタプルです:

インデックス 属性
0 (例:2023)
1 1-12
2 1-31
3 0-23
4 0-59
5 0-61(60と61はうるう秒用)
6 曜日 0-6(0は月曜日)
7 年内日次 1-366
8 DST -1、0、1(夏時間フラグ)

これが圧倒的に多すぎると思わないでください。これらの要素を私たちのレッスンで使っていきますので、すぐに慣れることでしょう!

現在の時刻の取得

簡単なことから始めましょう:現在の時刻の取得です。Pythonでは、timeモジュールを使うとこれが非常に簡単です:

import time

current_time = time.localtime()
print("現在の時刻:", current_time)

これを実行すると、TimeTupleが表示されます。各数字は先ほどの表の要素に対応しています。例えば、time.struct_time(tm_year=2023, tm_mon=6, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=166, tm_isdst=0)と表示された場合、それは2023年6月15日14時30分を意味します。

フォーマットされた時刻の取得

TimeTupleはコンピュータにとって便利ですが、人間にはあまり親しみがありません。では、より読みやすい形で時刻をフォーマットしましょう:

import time

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("フォーマットされた時刻:", formatted_time)

これは、"2023-06-15 14:30:00"のような形式で表示されます。もっと良くなったでしょうか? %Y%m%dなどのフォーマットコードは、Pythonに時間の要素をどのように配置するかを指示します。Pythonにテンプレートを与えるようなものです。

月のカレンダーの取得

さらに一歩進めて、一个月分のカレンダーを印刷しましょう。calendarモジュールを使います:

import calendar

year = 2023
month = 6

print(calendar.month(year, month))

これは、2023年6月のきれいにフォーマットされたカレンダーを印刷します。Pythonのプログラム内にミニデスクカレンダーがあるようなものです!

timeモジュール

すでにtimeモジュールを少し使っていますが、さらに詳しく調べてみましょう。このモジュールは、さまざまな時間関連の関数を提供します。以下は、いくつかの便利な関数です:

import time

print("エポックからの現在の時間(秒):", time.time())
print("現在のローカル時間:", time.ctime())
print("2秒間スリープ...")
time.sleep(2)
print("目覚めた!")

sleep()関数は、プログラムを一時的に停止させたい場合に特に便利です。コードに短い昼寝をさせるようなものです!

calendarモジュール

月を印刷するように見たことはありますが、calendarモジュールはさらに多くのことができます:

import calendar

print("2023年はうるう年ですか?", calendar.isleap(2023))
print("2000年から2050年までのうるう年の数:", calendar.leapdays(2000, 2050))
print("2023年6月15日は何曜日ですか?", calendar.weekday(2023, 6, 15))

これらの関数を使えば、カレンダーや日付と簡単に作業できます。うるう年を数えるのに指を使う必要がなくなります!

Python datetimeモジュール

datetimeモジュールは、Pythonで時間操作のスイスアーミーナイフです。timecalendarモジュールの機能を組み合わせて、さらに多くの機能を追加します。

from datetime import datetime, date, time

# 現在の日付と時刻
now = datetime.now()
print("現在の日付と時刻:", now)

# 特定の日付の作成
my_birthday = date(1990, 5, 15)
print("私の誕生日:", my_birthday)

# 特定の時刻の作成
alarm = time(7, 30, 0)
print("アラーム設定時刻:", alarm)

datetimeを使えば、日付と時刻の作成、操作、フォーマットが簡単に行えます。

Python dateオブジェクト

datetimeモジュールのdateオブジェクトを使えば、日付(年、月、日)で作業できます:

from datetime import date

today = date.today()
print("今日の日付:", today)
print("年:", today.year)
print("月:", today.month)
print("日:", today.day)

それは、今日の日付を知っておしまいカレンダーのようなものです!

Python timeオブジェクト

同様に、timeオブジェクトは時刻(時、分、秒、マイクロ秒)で作業できます:

from datetime import time

lunch_time = time(12, 30, 0)
print("昼休みの時刻:", lunch_time)
print("時:", lunch_time.hour)
print("分:", lunch_time.minute)
print("秒:", lunch_time.second)

今や、コーディングの休憩を正確にスケジュールできます!

Python datetimeオブジェクト

datetimeオブジェクトはdatetimeを組み合わせ、両方を完全に制御できます:

from datetime import datetime

now = datetime.now()
print("現在の日付と時刻:", now)
print("現在の年:", now.year)
print("現在の月:", now.month)
print("現在の日:", now.day)
print("現在の時:", now.hour)
print("現在の分:", now.minute)
print("現在の秒:", now.second)

それは、現在の瞬間について何でも知っているスーパーパワード時計のようなものです!

Python timedeltaオブジェクト

最後に、timedeltaについて話しましょう。このオブジェクトは時間の期間を表し、日付演算に非常に便利です:

from datetime import datetime, timedelta

now = datetime.now()
print("現在の日付と時刻:", now)

# 1日後
tomorrow = now + timedelta(days=1)
print("明日この時刻:", tomorrow)

# 1週前
last_week = now - timedelta(weeks=1)
print("先週この時刻:", last_week)

timedeltaを使えば、コードで未来や過去の日付を簡単に計算できます。多くのアプリケーションにとって非常に役立ちます。

それでは、私たちの若いPythonistaたち!Pythonの日付と時刻の魔法の世界を旅することができました。練習は成功の道なので、これらの概念を実験することをためらわないでください。知らずと知らずに、あなたはコーディングの時間の主となることができるようになりました!

Credits: Image by storyset