python3.doc_15
R e i - D r e a m
for Laravel
TOP > Python3 > Python基本(日付と時刻)
Guest
login

最終投稿日:2022年6月18日

Python基本(日付と時刻)
日付と時刻
[datetime]モジュールから色々インポートできます。
from datetime import date, time, datetime, timedelta
● 日付
d = date(2017, 12, 6)
print(d)                                          ※2017-12-06
d = date.today()
print(d)                                          ※2017-12-06
● 時刻
t = time(23, 11, 55)
print(t)                                          ※23:11:55
● 日時
dt = datetime(2017, 12, 6, 23, 11, 55)
print(dt)                                          ※2017-12-06 23:11:55
dt = datetime.today()                ※datetime.now()でもOK!
print(dt)                                          ※2017-12-06 20:28:20.650628
dt = datetime.utcnow()
print(dt)                                          ※2017-12-06 11:55:00.078622    ※協定世界時(UTC)
dt = datetime.now().timestamp()
print(dt)                                          ※1561472367.435914 タイムスタンプ
● 時間
td = timedelta(0,1200)
print(td)                                          ※0:20:00    0秒から1200秒までの差
● 時間の計算
d = datetime.now() - datetime(2015, 10, 9)
print(d)                                          ※789 days, 20:44:50.295812
d = datetime.now() + timedelta(days = 3, hours = 5, minutes = 10, seconds = 30, milliseconds = 1234 )
print(d)                                          ※2017-12-10 01:55:21.529853
td = timedelta(days = 3, hours = 5 ) * 2
d = datetime.now() + td
print(d)                                          ※2017-12-13 06:44:50.295887
※時間の差を秒で取得
d.total_seconds() / (60 * 60 * 24)
math.ceil(d.total_seconds() / (60 * 60 * 24))            ※import math して、切り捨てると良い
【メモ】
時間の計算は「+-」のみが使用できます。
ただし[timedelta]に関しては「+-*/」全て使えます。
タイムゾーン
[datetime]モジュールから更に[timezone]をインポートする
from datetime import datetime, timedelta, timezone
独自にタイムゾーンを定義する
例)
myJST = timezone(timedelta(hours = 9), 'Japan')      ※時差が9時間を定義している ※第2引数は任意の文字列
d = datetime.now()
print(d)                                                                                          ※2017-12-06 21:19:46.413631
d = datetime.now( tz = myJST )
print(d)                                                                                          ※2017-12-06 21:19:46.413681+09:00
    ※独自のタイムゾーンを設定する場合は、名前付き引数[tz]を使う
【メモ】
結果、2つの時刻に違いはないが、タイムゾーンを内包した datetime オブジェクトは astimezone メソッドを使って別のタイムゾーン時刻に変換が可能となる。
例)
    d = datetime.now( timezone.utc )      ※協定世界時(UTC)のタイムゾーンは timezone.utc で渡せる。
    print(d)                                                          ※2017-12-06 12:19:46.413703+00:00
    d = datetime.now( timezone.utc ).astimezone( myJST )
    print(d)                                                          ※2017-12-06 21:19:46.413716+09:00
日時の文字列表現
[月]や[日]は強制的に2桁になるっぽい。。
これを回避するには正規表現で置換する方法がある
from datetime import datetime
import re
● オブジェクトから文字列へ変換
d = datetime(2017, 3, 7)
print(d.strftime('%Y年%m月%d日'))                                          ※2017年03月07日
str = d.strftime('%Y年%m月%d日')
str = re.sub(r'0(\d+)', r'\1', str)                                                      ※217年3月7日
print(str)
str = '今日は{d:%Y-%m-%d}です。'.format(d = datetime.now())
print(str)                                                                                                ※今日は2017-12-06です。
● 文字列からオブジェクトへ変換
d = datetime.strptime('2017-10-9', '%Y-%m-%d')
d = datetime.strptime('2017年10月9日', '%Y年%m月%d日')
    ※第2引数のフォーマットを利用して、第1引数の文字列を日付オブジェクトに変換する
【メモ】
日付フォーマットのプレースホルダ
%Y                                          4桁の年
%y                                          2桁の年
%m                                        2桁の月
%d                                         2桁の日
%H                                         2桁の時
%M                                         2桁の分
%S                                          2桁の秒
%z                                          タイムゾーンのオフセット                              +0000
%Z                                          タイムゾーンの名前                                          UTC+00:00
レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる