Python - datetimeモジュールで日付、時刻を扱う

datetime は日付と時刻を扱うライブラリです。

このライブラリを利用して現在時刻を取得したり、特定の時刻形式の文字列に変換したりすることもできます。

次の内容を調べてみましょう。

1. 現在の日付と時刻の datetime オブジェクトの作成 : now()

now() は、現在の日付、時刻情報を持つ datetime オブジェクトを生成します。

import datetime

datetime_object = datetime.datetime.now()
print(datetime_object)
print(type(datetime_object))

Output:

2020-10-11 21:37:45.648730
<class 'datetime.datetime'>

from datetime を使って単に datetime.now() で表現することもできます。

from datetime import datetime

datetime_object = datetime.now()
print(datetime_object)

2.現在の日付のdateオブジェクトを生成する:today()

today() は現在の日付情報を持つ date オブジェクトを生成します。

import datetime

date_object = datetime.date.today()
print(date_object)
print(type(date_object))

Output:

2020-10-11
<class 'datetime.date'>

from datetimedate.today()のように簡単に表現できます。

from datetime import date

today = date.today()
print(today)

Output:

2020-10-11

3. 任意の時間の日付、日時オブジェクトの作成

特定の日付情報を持つdatetimeオブジェクトを直接作成することもできます。

次のようにコンストラクタに引数を渡すだけです。

  • datetime(year, month, day, hour, min, second)
  • date(year, month, day)
d = datetime(2020, 10, 11, 10, 30, 20)
print(d)

a = date(2018, 10, 11)
print(a)

Output:

2020-10-11 10:30:20
2018-10-11

4. Timestampでdate、datetimeオブジェクトを作成する

Timestampは1970/01/01 (UTC)からある時間までの秒を計算した値です。

次のように fromtimestamp() の引数として timestamp を渡すと、これに対応する date, datetime オブジェクトが生成されます。

from datetime import date
from datetime import datetime

date_obj = date.fromtimestamp(1602374400)
print("Current Date =", date_obj)

datetime_obj = datetime.fromtimestamp(1602374400)
print("Current DateTime =", datetime_obj)

Output:

Current Date = 2020-10-11
Current DateTime = 2020-10-11 09:00:00

5. date オブジェクトの year、month、day

次のように、dateオブジェクトからyear、month、dayの値を取得できます。

from datetime import date

today = date.today()
print("year:", today.year)
print("month:", today.month)
print("day:", today.day)

Output:

year: 2020
month: 10
day: 11

6. 任意の時間の時間オブジェクトの作成

time() は引数に渡された値で time オブジェクトを生成します。

from datetime import time

# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)
print(type(a))

# time(hour, minute, second)
b = time(15, 25, 30)
print("b =", b)

# time(hour, minute and second)
c = time(hour = 15, minute = 25, second = 30)
print("c =", c)

# time(hour, minute, second, microsecond)
d = time(15, 25, 30, 123456)
print("d =", d)

Output:

a = 00:00:00
<class 'datetime.time'>
b = 15:25:30
c = 15:25:30
d = 15:25:30.123456

次のように、timeオブジェクトからhour、minute、secondなどの値を読み取ることができます。

from datetime import time

a = time(15, 25, 30)

print("time =", a)
print("hour =", a.hour)
print("minute =", a.minute)
print("second =", a.second)
print("microsecond =", a.microsecond)

Output:

time = 15:25:30
hour = 15
minute = 25
second = 30
microsecond = 0

7. timedeltaによる時間差の表現

timedeltaは、2つの時間オブジェクトの違いを表します。

次のように2つのdate、datetimeを減算すると、timedeltaオブジェクトが作成され、時間差の値があります。

from datetime import datetime, date

time1 = date(year = 2020, month = 10, day = 11)
time2 = date(year = 2018, month = 11, day = 22)
time_delta = time1 - time2
print("time_delta =", time_delta)
print("type =", type(time_delta))

time1 = datetime(year = 2020, month = 10, day = 11, hour = 15, minute =43, second = 30)
time2 = datetime(year = 2018, month = 11, day = 22, hour = 12, minute = 20, second = 11)
time_delta = time1 - time2
print("time_delta =", time_delta)
print("type =", type(time_delta))

Output:

time_delta = 689 days, 0:00:00
type = <class 'datetime.timedelta'>
time_delta = 689 days, 3:23:19
type = <class 'datetime.timedelta'>

8. 特定の時間形式に変換

strftime() は datetime オブジェクトを目的の時間形式に変換し、その結果を文字列として返します。

from datetime import datetime

# current date and time
now = datetime.now()

format_date = now.strftime("%H:%M:%S")
print("time:", format_date)

format_date = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("date and time:", format_date)

format_date = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("date and time:", format_date)

Output:

time: 21:57:38
date and time: 10/11/2020, 21:57:38
date and time: 11/10/2020, 21:57:38

9. 文字列を datetime オブジェクトに変換

strptime() は文字列で表される時間を datetime オブジェクトに変換します。

次のように文字列を解析してdatetimeオブジェクトに変換できます。

from datetime import datetime

date_str = "11 October, 2020"
datetime_obj = datetime.strptime(date_str, "%d %B, %Y")
print("date =", datetime_obj)
print(type(datetime_obj))

date_str = "11/10/2020, 12:20:30"
datetime_obj = datetime.strptime(date_str, "%d/%m/%Y, %H:%M:%S")
print("date =", datetime_obj)
print(type(datetime_obj))

Output:

date = 2020-10-11 00:00:00
<class 'datetime.datetime'>
date = 2020-10-11 12:20:30
<class 'datetime.datetime'>

Related Posts

codechachaCopyright ©2019 codechacha