Python - 日付と時刻
こんにちは、未来のPythonの魔法使いたち!今日、私たちはPythonの日付と時刻の魔法の世界に旅立ちます。あなたの親しみのある近所のコンピュータ先生として、この冒険を案内することができて光栄です。だから、仮想の杖(キーボード)を握りしましょう。それでは、いきます!
ティックインターバルとは?
日付と時刻の操作を始める前に、基本的な概念を理解しましょう:ティックインターバルです。コンピュータの世界では、時間はしばしばティックで計測されます。でも、ティックとは具体的に何でしょうか?
ティックは、あなたのコンピュータの心臓の鼓動のようなものです。それは、あなたのコンピュータのクロックが計測できる最小の時間単位です。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で時間操作のスイスアーミーナイフです。time
とcalendar
モジュールの機能を組み合わせて、さらに多くの機能を追加します。
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
オブジェクトはdate
とtime
を組み合わせ、両方を完全に制御できます:
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