0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonの日付・時刻処理

Posted at

はじめに

Pythonで日付・時刻の文字列フォーマット変更や、日時差の計算をする方法についてまとめる。日付・時刻処理はdatetimeのライブラリを使う。
 
ドキュメント

目次

現在の日付・時刻を取得する

datetime.now()で現在の日付・時刻を取得できる。取得した値からそれぞれ抜き出すこともできる。抜き出しのできるデータは下表の通り。

パラメータ 抜き出すデータ
.data() 日付
.time() 時間
.year
.month
.day
.hour
.minute
.second
.microsecond ms
datetime_test.py
from datetime import datetime

td = datetime.now()

print(f'# {type(td)             = } / {td}')
print(f'# {type(td.date())      = } / {td.date()}')
print(f'# {type(td.time())      = } / {td.time()}')
print(f'# {type(td.year)        = } / {td.year}')
print(f'# {type(td.month)       = } / {td.month}')
print(f'# {type(td.day)         = } / {td.day}')
print(f'# {type(td.hour)        = } / {td.hour}')
print(f'# {type(td.minute)      = } / {td.minute}')
print(f'# {type(td.second)      = } / {td.second}')
print(f'# {type(td.microsecond) = } / {td.microsecond}')

# type(td)             = <class 'datetime.datetime'> / 2023-11-24 21:49:09.736613
# type(td.date())      = <class 'datetime.date'> / 2023-11-24
# type(td.time())      = <class 'datetime.time'> / 21:49:09.736613
# type(td.year)        = <class 'int'> / 2023
# type(td.month)       = <class 'int'> / 11
# type(td.day)         = <class 'int'> / 24
# type(td.hour)        = <class 'int'> / 21
# type(td.minute)      = <class 'int'> / 49
# type(td.second)      = <class 'int'> / 9
# type(td.microsecond) = <class 'int'> / 736613

戻る

日付・時刻を指定する

datetime()で任意の日付・時刻を指定することができる。型はdatetime.now()と同じとなる。

datetime_test.py
from datetime import datetime
 
#日付まで指定---
td = datetime(2023,11,24)
print(f'# {type(td) = } / {td}')

# type(td) = <class 'datetime.datetime'> / 2023-11-24 00:00:00

#時刻まで指定---
td = datetime(2023,11,24,9,10,15)
print(f'# {type(td) = } / {td}')

# type(td) = <class 'datetime.datetime'> / 2023-11-24 09:10:15

戻る

日付・時刻を計算する

datetime型同士の計算や比較ができる。また計算した結果は下記の通りにすると整数で値を取得できる。

パラメータ 内容
.days 日差を整数で返す
.seconds 時間差を秒数で返す
datetime_test.py
from datetime import datetime
 
#日付差======================
td1 = datetime(2023,11,24)
td2 = datetime(2023,10,24)
delta = td1 - td2
print(f'# {type(delta) = }/{delta}')
print(f'# {type(delta.days) = }/{delta.days}')

# type(delta) = <class 'datetime.timedelta'>/31 days, 0:00:00
# type(delta.days) = <class 'int'>/31


#時刻デルタ計算=============
td1 = datetime(2023,11,24,10,15,30)
td2 = datetime(2023,11,24,9,10,15)
delta = td1 - td2
print(f'# {type(delta) = }/{delta}')
print(f'# {type(delta.seconds) = }/{delta.seconds}')

# type(delta) = <class 'datetime.timedelta'>/1:05:15
# type(delta.seconds) = <class 'int'>/3915


#日付の比較=================
td1 = datetime(2023,11,24)
td2 = datetime(2023,10,24)
if (td > td2):
	print(f'# td2が日付古い。')

戻る

日付を加算する

timedelta()を使うと、日付の加算ができる。

datetime_test.py
from datetime import timedelta

td = datetime(2023,11,25)

td = td + timedelta(days=5)
print(f'# {type(td) = } / {td}')

# type(td) = <class 'datetime.datetime'> / 2023-11-30 00:00:00

td = td + timedelta(weeks=2)
print(f'# {type(td) = } / {td}')

# type(td) = <class 'datetime.datetime'> / 2023-12-14 00:00:00

戻る

datetime→日付・時刻文字列変換

datetime型を日付・時刻文字列へ変換する。変換は.strftime()で行う、下記パラメータを使って、文字列フォーマットを指定する。

パラメータ 内容
%Y 4桁西暦
%y 2桁西暦
%m 2桁月
%d 2桁日
%H 2桁時間
%M 2桁分
%S 2桁秒
%f 6桁ms
datetime_test.py
from datetime import datetime

td = datetime.now()

str_td = td.strftime('%Y/%m/%d %H:%M:%S.%f')
print(f'# {type(str_td) = } / {str_td}')

# type(str_td) = <class 'str'> / 2023/11/24 23:01:00.717843


str_td = td.strftime('%Y-%m-%d %H:%M:%S.%f')
print(f'# {type(str_td) = } / {str_td}')

# type(str_td) = <class 'str'> / 2023-11-24 23:01:00.717843


str_td = td.strftime('%Y%m%d')
print(f'# {type(str_td) = } / {str_td}')

# type(str_td) = <class 'str'> / 20231124


str_td = td.strftime('%y/%m/%d %H:%M:%S.%f')
print(f'# {type(str_td) = } / {str_td}')

# type(str_td) = <class 'str'> / 23/11/24 23:01:00.717843

戻る

日付・時刻文字列変換→datetime

日付・時刻文字列をdatetime型へ変換する。変換は.strptime()で行う。

datetime_test.py
from datetime import datetime

str_td = '2023-11-24T01:20:12'
ft     = '%Y-%m-%dT%H:%M:%S'
td     = datetime.strptime(str_td, ft)
print(f'# {type(td) = } / {td}')

# type(td) = <class 'datetime.datetime'> / 2023-11-24 01:20:12

ISOフォーマット文字列をdatetime型へ変換する場合は.fromisoformat()で行う。

datetime_test.py
from datetime import datetime

# ISOフォーマット文字列→datetime変換----------------------
td = datetime.fromisoformat('2023-11-24T01:20:12+09:00')
print(f'# {type(td) = } / {td}')

# type(td) = <class 'datetime.datetime'> / 2023-11-24 01:20:12+09:00


# ISOフォーマット文字列→datetime→文字列変換---------------
td = datetime.fromisoformat('2023-11-24T01:20:12+09:00')
str_td = td.strftime('%Y/%m/%d')
print(f'# {type(str_td) = } / {str_td}')

# type(str_td) = <class 'str'> / 2023/11/24

戻る

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?