Pythonの時間datetimeモジュール
10847 ワード
Pythonのタイムモジュール Pythonのタイムモジュール datetimeモジュール 1.datetime.dateクラス: 2.datetimeのtimeクラス 3.datetimeのdatetimeクラス 4.Datetimeのtimedeltaクラス
strftime()とstrptime()の使用 共通シンボルフォーマット コードインスタンス
datetimeモジュール
datetimeモジュールはdateとtimeモジュールの集合に用いられ、datetimeには2つの定数があり、MAXYEARとMINYEAR、それぞれ9999と1である.
Datetimeモジュールは5つのクラスを定義し、それぞれ
1.datetime.date:日付を表すクラス
2.datetime.Datetime:日付時間を表すクラス
3.datetime.time:時間を表すクラス
4.datetime.timedelta:時間間隔、すなわち2つの時点の間隔を表す
5.datetime.tzinfo:タイムゾーンに関する情報
1.datetime.dateクラス:
dateクラスには3つのパラメータがあり、datetime.date(year,month,day)、year-month-dayを返します
方法:
1.datetime.date.ctime()は、Sun Apr 16 00:00:00:00などのフォーマットを返します.
2.datetime.date.fromtimestamp(timestamp)は、与えられた時間に基づいて、dateオブジェクトを返します.datetime.date.today()は同じ役割を果たす
3.datetime.date.isocalendar():フォーマット(year,month,day)のメタグループを返し、(2017,15,6)
4.datetime.date.isoformat():YYYY-MM-DDなどのフォーマットを返します.
5.datetime.date.isoweekday():指定された日付の曜日(1-7)、月曜日=1、日曜日=7を返します.weekday()月曜日=0、日曜日=6
6.datetime.date.replace(year,month,day):指定した日付を置き換えますが、元の日付は変更しません.
7.datetime.date.strftime(format):日付時間を所定のformatでフォーマットします.
8.datetime.date.timetuple():日付に対応するtimeを返す.struct_timeオブジェクト
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1)
9.datetime.date.weekday():日付を返す曜日
2.datetimeのtimeクラス
timeクラスには5つのパラメータがあり、datetime.time(hour,minute,second,microsecond,tzoninfo)は、08:29:30に戻ります.
1.datetime.time.replace()
2.datetime.time.strftime(format):format形式で時間を返す
3.datetime.time.tzname():タイムゾーン名を返します
4.datetime.time.utcoffset():タイムゾーンを返す時間オフセット量
3.datetimeのdatetimeクラス
datetimeクラスには多くのパラメータがあり、datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])、戻り年月日、時間分秒
datetime.datetime.ctime()
datetime.datetime.now().date():現在の日時を返す日付部分
datetime.datetime.now().time():現在の日時を返す時間部分
datetime.datetime.fromtimestamp()
datetime.datetime.now():現在のシステム時間を返す
datetime.datetime.replace()
datetime.datetime.strftime():日付フォーマットから文字列フォーマットdatetimeに変換する.datetime.now().strftime(‘%b-%d-%Y %H:%M:%S’) ‘Apr-26-2018 21:01:35’
datetime.datetime.strptime():文字列フォーマットから日付フォーマットに変換
datetime.datetime.strptime(‘Apr-26-2018 21:01:35’, ‘%b-%d-%Y %H:%M:%S’) 2018-04-26 21:01:35
4.datetimeのtimedeltaクラス
datetime.datetime.timedeltaは、2つの日付の差を計算するために使用します.たとえば、次のようにします.
strftime()とstrptime()の使用
strftime()関数は、日付、日付時間、時間をフォーマットするための関数であり、date、datetime、timeなどのクラスをサポートし、これらの日付、日付時間または時間をフォーマット文字要求フォーマットにより文字列で表す.逆にstrptime()関数は、文字列が表す日付時間からフォーマット文字列の要求に応じて対応する日付時間に変換されます.
timeオブジェクトの場合、フォーマット文字列は、timeオブジェクトに対応する値がないため、年、月、日に関連する文字は使用しません.不幸にも使用した場合は、デフォルトで0の値しか出力できません.
dateオブジェクトの場合、フォーマット文字列は、dateオブジェクトに対応する値がないため、時間、分、秒、およびマイクロ秒に関連する文字を使用しないでください.使用した場合、デフォルト出力は0のみです
strftime()関数はC言語libライブラリを呼び出して実現されるため、異なるプラットフォームでサポートされており、特定のプラットフォームでサポートされている詳細は、プラットフォーム上でstrftimeドキュメントの説明を表示する必要があります.
一般的なシンボルフォーマット
書式文字
意味
例
注意事項
%a
曜日の英語の略語
Sun, Mon, …, Sat(en_US); So, Mo, …, Sa(de_DE)
%A
曜日の英語フルネーム
Sunday, Monday, …, Saturday(en_US)
%w
曜日は数字、0は日曜日、6は土曜日
0,1,…,6
%d
0で補充された2桁の日付数
01,02,…,31
%b
月は略語で表示
Jan, Feb,…, Dec(en_US)
%B
月にフルネーム表示
January, February, …,December(en_US)
%m
月に0補充の2桁表示を採用
01,02,…,12
%y
年は0補完の2桁で表示
00,01,…,99
%Y
四桁で表される年
0001,0002,…,2013,2014,2015,…,9998,9999
%I
0で補充された12時間で表示される時間
00,01,…,12
%p
現地時間は午前ですか、午後ですか.
AM,PM(en_US)
%M
0の補足分で表示
00,01,…,59
%S
0補完秒で表示
00,01,…,59
%f
0で補完するマイクロ秒で表す
000000,000001,…,999999
%z
UTCオフセットは+HHMMまたは-HMMとして表される
(empty),+0000,-0400,+1030
%Z
タイムゾーン名
(empty),UTC,EST,CST
%j
0で補充された年の日数
001,002,…,366
%U
一年のうち何週目、日曜日を週として始めます
00,01,…,53
%W
一年で何週目、月曜日が週として始まります
00,01,…,53
%c
ローカルの適切な日付と時間で表示
Tue Aug 16 21:30:00 1988(en_US)
%x
ローカルの適切な日付で表示
08/16/88(None);08/16/1988(en_US)
%%
パーセントを出力
%
コードインスタンス
datetimeモジュール
datetimeモジュールはdateとtimeモジュールの集合に用いられ、datetimeには2つの定数があり、MAXYEARとMINYEAR、それぞれ9999と1である.
Datetimeモジュールは5つのクラスを定義し、それぞれ
1.datetime.date:日付を表すクラス
2.datetime.Datetime:日付時間を表すクラス
3.datetime.time:時間を表すクラス
4.datetime.timedelta:時間間隔、すなわち2つの時点の間隔を表す
5.datetime.tzinfo:タイムゾーンに関する情報
1.datetime.dateクラス:
dateクラスには3つのパラメータがあり、datetime.date(year,month,day)、year-month-dayを返します
方法:
1.datetime.date.ctime()は、Sun Apr 16 00:00:00:00などのフォーマットを返します.
2.datetime.date.fromtimestamp(timestamp)は、与えられた時間に基づいて、dateオブジェクトを返します.datetime.date.today()は同じ役割を果たす
3.datetime.date.isocalendar():フォーマット(year,month,day)のメタグループを返し、(2017,15,6)
4.datetime.date.isoformat():YYYY-MM-DDなどのフォーマットを返します.
5.datetime.date.isoweekday():指定された日付の曜日(1-7)、月曜日=1、日曜日=7を返します.weekday()月曜日=0、日曜日=6
6.datetime.date.replace(year,month,day):指定した日付を置き換えますが、元の日付は変更しません.
7.datetime.date.strftime(format):日付時間を所定のformatでフォーマットします.
8.datetime.date.timetuple():日付に対応するtimeを返す.struct_timeオブジェクト
time.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1)
9.datetime.date.weekday():日付を返す曜日
2.datetimeのtimeクラス
timeクラスには5つのパラメータがあり、datetime.time(hour,minute,second,microsecond,tzoninfo)は、08:29:30に戻ります.
1.datetime.time.replace()
2.datetime.time.strftime(format):format形式で時間を返す
3.datetime.time.tzname():タイムゾーン名を返します
4.datetime.time.utcoffset():タイムゾーンを返す時間オフセット量
3.datetimeのdatetimeクラス
datetimeクラスには多くのパラメータがあり、datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])、戻り年月日、時間分秒
datetime.datetime.ctime()
datetime.datetime.now().date():現在の日時を返す日付部分
datetime.datetime.now().time():現在の日時を返す時間部分
datetime.datetime.fromtimestamp()
datetime.datetime.now():現在のシステム時間を返す
datetime.datetime.replace()
datetime.datetime.strftime():日付フォーマットから文字列フォーマットdatetimeに変換する.datetime.now().strftime(‘%b-%d-%Y %H:%M:%S’) ‘Apr-26-2018 21:01:35’
datetime.datetime.strptime():文字列フォーマットから日付フォーマットに変換
datetime.datetime.strptime(‘Apr-26-2018 21:01:35’, ‘%b-%d-%Y %H:%M:%S’) 2018-04-26 21:01:35
4.datetimeのtimedeltaクラス
datetime.datetime.timedeltaは、2つの日付の差を計算するために使用します.たとえば、次のようにします.
>>> a=datetime.datetime.now()
>>> b=datetime.datetime.now()
>>> a
datetime.datetime(2017, 4, 16, 21, 21, 20, 871000)
>>> b
datetime.datetime(2017, 4, 16, 21, 21, 29, 603000)
>>> b-a
datetime.timedelta(0, 8, 732000)
>>> (b-a).seconds
8
time1 = datetime.datetime(2016, 10, 20)
time2 = datetime.datetime(2015, 11, 2)
""" """
print(time1-time2).days
""" """
print (time1-time2).total_seconds()
strftime()とstrptime()の使用
strftime()関数は、日付、日付時間、時間をフォーマットするための関数であり、date、datetime、timeなどのクラスをサポートし、これらの日付、日付時間または時間をフォーマット文字要求フォーマットにより文字列で表す.逆にstrptime()関数は、文字列が表す日付時間からフォーマット文字列の要求に応じて対応する日付時間に変換されます.
timeオブジェクトの場合、フォーマット文字列は、timeオブジェクトに対応する値がないため、年、月、日に関連する文字は使用しません.不幸にも使用した場合は、デフォルトで0の値しか出力できません.
dateオブジェクトの場合、フォーマット文字列は、dateオブジェクトに対応する値がないため、時間、分、秒、およびマイクロ秒に関連する文字を使用しないでください.使用した場合、デフォルト出力は0のみです
strftime()関数はC言語libライブラリを呼び出して実現されるため、異なるプラットフォームでサポートされており、特定のプラットフォームでサポートされている詳細は、プラットフォーム上でstrftimeドキュメントの説明を表示する必要があります.
一般的なシンボルフォーマット
書式文字
意味
例
注意事項
%a
曜日の英語の略語
Sun, Mon, …, Sat(en_US); So, Mo, …, Sa(de_DE)
%A
曜日の英語フルネーム
Sunday, Monday, …, Saturday(en_US)
%w
曜日は数字、0は日曜日、6は土曜日
0,1,…,6
%d
0で補充された2桁の日付数
01,02,…,31
%b
月は略語で表示
Jan, Feb,…, Dec(en_US)
%B
月にフルネーム表示
January, February, …,December(en_US)
%m
月に0補充の2桁表示を採用
01,02,…,12
%y
年は0補完の2桁で表示
00,01,…,99
%Y
四桁で表される年
0001,0002,…,2013,2014,2015,…,9998,9999
%I
0で補充された12時間で表示される時間
00,01,…,12
%p
現地時間は午前ですか、午後ですか.
AM,PM(en_US)
%M
0の補足分で表示
00,01,…,59
%S
0補完秒で表示
00,01,…,59
%f
0で補完するマイクロ秒で表す
000000,000001,…,999999
%z
UTCオフセットは+HHMMまたは-HMMとして表される
(empty),+0000,-0400,+1030
%Z
タイムゾーン名
(empty),UTC,EST,CST
%j
0で補充された年の日数
001,002,…,366
%U
一年のうち何週目、日曜日を週として始めます
00,01,…,53
%W
一年で何週目、月曜日が週として始まります
00,01,…,53
%c
ローカルの適切な日付と時間で表示
Tue Aug 16 21:30:00 1988(en_US)
%x
ローカルの適切な日付で表示
08/16/88(None);08/16/1988(en_US)
%%
パーセントを出力
%
コードインスタンス
#!usr/bin/env python
#-*- coding:utf-8 _*-
"""
@author:binbinzhang
@file: time.py
@time: 2018/04/26
@email:[email protected]
@function:python
"""
import datetime
#
d1 = datetime.datetime.now()
print (d1)
#
d2 = d1 + datetime.timedelta(hours=8)
print (d2)
#
d3 = d2.strftime('%Y-%m-%d %H:%M:%S')
print (d3)
#
date = str("30 Apr 18")
d4 = datetime.datetime.strptime(date,'%d %b %y')
print (d4)
'''
2018-04-26 20:25:06.238218
2018-04-27 04:25:06.238218
2018-04-27 04:25:06
2018-04-30 00:00:00
'''
def first_day_of_month():
'''
:return:
'''
return datetime.date.today() - datetime.timedelta(days=datetime.datetime.now().day - 1)
def first_day_of_week():
'''
:return:
'''
return datetime.date.today() - datetime.timedelta(days=datetime.date.today().weekday())
if __name__ == "__main__":
this_week = first_day_of_week()
last_week = this_week - datetime.timedelta(days=7)
this_month = first_day_of_month()
last_month = this_month - datetime.timedelta(days=(this_month - datetime.timedelta(days=1)).day)
print (this_week)
print (last_week)
print (this_month)
print (last_month)
"""
datetime
0001 9999
"""
"""
datetime
now tz, 。 today
"""
now = datetime.datetime.now()
# UTC
datetime.datetime.utcnow()
attrs = [
("year", " "), ('month', " "), ("day", " "), ('hour', " "), ('minute', " "), ('second', " "),
('microsecond', " "), (
'min', " "), ('max', " "),
]
for k, v in attrs:
"now.%s = %s #%s" % (k, getattr(now, k), v)
# time
now.timetuple()
# date
now.date()
# time
now.time()
# 。 0, 6,
now.weekday()
# 。 1, 7
now.isoweekday()
# 。 1
now.replace(day=1)
past = datetime.datetime(2010, 11, 12, 13, 14, 15, 16)
#
# timedelta
now - past