python日付時間処理まとめ
しばらくの間djangoでwebプロジェクトを開発し、pythonでプロジェクトを開発するのは初めてで、多くの関連知識点をまとめなければなりません.本稿で紹介したpythonの日付時間処理は最近使われたもので、皆さんに役に立つことを望んで、同時に自分のノートとして保存します.
Pythonはtime、calendar、datetimeなどのモジュールを提供し、日付と時間を処理します.よく使われているのはdatetimeモジュールです.
時間間隔は秒単位の浮動小数点数です.
各タイムスタンプは1970年1月1日の真夜中(暦)からどのくらいの時間が経過したかで表される.
pythonの日付書式設定記号:%y 2桁の年表示(00-99) %Y 4桁の年表示(000-9999) %m月(01-12) %d月内の1日(0-31) %H 24時間制時間数(0-23) %I 12時間制時間数(01-12) %M分(00=59) %S秒(00-59) %aローカル簡略化曜日名 %Aローカルフルタイム名前 %bローカル簡略化月名 %Bローカル完全月名 %cローカル対応日付表示と時間表示 %j年間の1日(001-366) %pローカルA.M.またはP.M.の等価子 %U 1年間の曜日(00-53)日曜日は曜日の開始 %w曜日(0-6)、日曜日は曜日の開始 %W 1年間の曜日(00-53)月曜日が週の始まり %xローカル対応日付は を表します.%Xローカル対応時間表示 %Z現在タイムゾーンの名称 %%号自体 calendar
カレンダーの取得
カレンダーの取得
1週間の行のカレンダーを取得
取得日は曜日
datetime
現在の日付時刻の取得
現在の日付の取得後数日/先日
今週/今月末日および初日の取得
当日の最小時間/最大時間を取得
time
現在のタイムスタンプの取得
ローカル時間の取得
フォーマット時間の取得
各時間フォーマット間の変換 datetime <=> date datetime <=> timestamp datetime <=> string datetime <=> timetuple
Pythonはtime、calendar、datetimeなどのモジュールを提供し、日付と時間を処理します.よく使われているのはdatetimeモジュールです.
時間間隔は秒単位の浮動小数点数です.
各タイムスタンプは1970年1月1日の真夜中(暦)からどのくらいの時間が経過したかで表される.
pythonの日付書式設定記号:
カレンダーの取得
# year ,3 , c
calendar.calendar(2017)
カレンダーの取得
# 2017 11
>>> print calendar.month(2017, 11)
November 2017
Mo Tu We Th Fr Sa Su
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
1週間の行のカレンダーを取得
# 2017 11
>>> print calendar.monthcalendar(2017,11)
[[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 0, 0, 0]]
取得日は曜日
# 2017 11 11 (0-6 )
>>> print calendar.weekday(2017,11,11)
5
datetime
現在の日付時刻の取得
# (datetime )
>>> print datetime.datetime.now()
2017-11-11 17:21:56.076882
#
>>> print datetime.datetime.now().date()
2017-11-11
>>> print datetime.date.today()
2017-11-11
#
>>> print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2017-11-11 17:21:56'
現在の日付の取得後数日/先日
#
>>> print datetime.date.today() + datetime.timedelta(days=1)
2017-11-12
>>> print datetime.date.today() + datetime.timedelta(1)
2017-11-12
#
>>> print datetime.date.today() - datetime.timedelta(days=1)
2017-11-10
>>> print datetime.date.today() - datetime.timedelta(1)
2017-11-10
今週/今月末日および初日の取得
>>> today = datetime.date.today()
#
>>> print today - datetime.timedelta(today.weekday())
2017-11-06
#
>>> print today + datetime.timedelta(6-today.weekday())
2017-11-12
#
>>> print datetime.date(today.year, today.month, 1)
2017-11-01
#
>>> first_day_weekday, last_day_num = calendar.monthrange(today.year, today.month)
>>> print datetime.date(today.year, today.month, last_day_num)
2017-11-30
当日の最小時間/最大時間を取得
#
>>> print datetime.datetime.combine(datetime.date.today(), datetime.time.min)
2017-11-11 00:00:00
#
>>> print datetime.datetime.combine(datetime.date.today(), datetime.time.max)
2017-11-11 23:59:59.999999
time
現在のタイムスタンプの取得
>>> print time.time()
1510396655.7
ローカル時間の取得
>>> print time.localtime(time.time())
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=11, tm_hour=18, tm_min=13, tm_sec=57, tm_wday=5, tm_yday=315, tm_isdst=0)
フォーマット時間の取得
# %Y-%m-%d %H:%M:%S
>>> print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
2017-11-11 18:58:39
# %a %b %d %H:%M:%S %Y
>>> print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
Mon Nov 11 18:58:40 2017
#
>>> format_time = time.strptime("2017-11-11 18:58:39", "%Y-%m-%d %H:%M:%S")
>>> print time.mktime(format_time)
1510396712.0
各時間フォーマット間の変換
# datetime=> date
>>> print datetime.datetime.now().date()
2017-11-11
# date => datetime
>>> today = datetime.date.today()
>>> print datetime.datetime.combine(today, datetime.time.min)
2017-11-11 00:00:00
# datetime => timestamp
>>> print time.mktime(datetime.datetime.now().timetuple())
1510396755.0
# timestamp => datetime
>>> print datetime.datetime.fromtimestamp(1510396755.0)
2017-11-11 18:39:15
# datetime => string
>>> print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
2017-11-11 18:39:15
# string => datetime
>>> print datetime.datetime.strptime("2017-11-11 18:39:15", "%Y-%m-%d %H:%M:%S")
2017-11-11 18:39:15
# datetime => timetuple
>>> print datetime.datetime.now().timetuple()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=11, tm_hour=18, tm_min=50, tm_sec=57, tm_wday=5, tm_yday=315, tm_isdst=0)
# timetuple => datetime
>>> time_tuple = datetime.datetime.now().timetuple()
>>> print datetime.datetime.fromtimestamp(time.mktime(time_tuple))
2017-11-11 18:50:35