标签:fence toc cond class red 时分秒 unit enc inner
datetime模块1. 简介2. date类3. time类4. datetime类5. timedelta类5.1 数学计算的类date datetime timedelta5.2 时间变化量的计算会产生进位,即会影响到上一级的时间5.3 timedelta与date/datetime/timedelta之间的计算5.3.1 timedelta与date的计算5.3.2 timedelta与datetime的计算5.3.4 timedelta与timedelta的计算6. 一个应用实例
封装了一些和日期、时间相关的类。
主要是用来进行数学计算的。
有如下几个重要的类:
date类 - 年月日
time类 - 时分秒
datetime类 - 上面两个的组合
timedelta类 - 时间的变化量,即两个日期或两个时间之间的差值
date类1 """datetime模块中的date类""" 2 import datetime 3 ? 4 # 获取一个日期对象 5 d = datetime.date(2020, 5, 22) 6 print(d) 7 # 获取date对象的各个属性 8 print(d.year) 9 print(d.month) 10 print(d.day) 11 ? 12 # 输出结果: 13 2020-05-22 14 2020 15 5 16 22
time类
class
datetime.timeAn idealized time, independent of any particular day, assuming that every day has exactly 246060 seconds. (There is no notion of “leap seconds” here.) Attributes:
hour,minute,second,microsecond, andtzinfo.
1 """datetime模块中的time类""" 2 import datetime 3 ? 4 # 获取一个时间对象 5 t = datetime.time(17, 45, 32) 6 print(t) 7 # 获取时间对象的属性 8 print(t.hour) 9 print(t.minute) 10 print(t.second) 11 ? 12 # 输出结果: 13 17:45:32 14 17 15 45 16 32
datetime类1 """datetime模块中的datetime类""" 2 import datetime 3 ? 4 # 获取一个日期时间对象 5 dt = datetime.datetime(2020, 5, 22, 19, 29, 16) 6 print(dt) 7 # 获取日期时间对象的属性 8 print(dt.year) 9 print(dt.month) 10 print(dt.day) 11 print(dt.hour) 12 print(dt.minute) 13 print(dt.second) 14 ? 15 # 输出结果: 16 2020-05-22 19:29:16 17 2020 18 5 19 22 20 19 21 29 22 16
timedelta类A
timedeltaobject represents a duration, the difference between two dates or times.
class
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)All arguments are optional and default to
0. Arguments may be integers or floats, and may be positive or negative. Only days, seconds and microseconds are stored internally.Arguments are converted to those units:
A millisecond is converted to 1000 microseconds.
A minute is converted to 60 seconds.
An hour is converted to 3600 seconds.
A week is converted to 7 days.
and days, seconds and microseconds are then normalized so that the representation is unique, with
0 <= microseconds < 1000000
0 <= seconds < 3600*24(the number of seconds in one day)
-999999999 <= days <= 999999999
date datetime timedeltatimedelta只能和以下3个类进行数学计算
date类
datetime类
timedelta类
1 """datetime模块中的timedelta""" 2 import datetime 3 ? 4 td = datetime.timedelta(days=1) 5 print(td) 6 # 参与数学计算 7 d = datetime.date(2020, 5, 22) # 创建一个时间对象 8 # 对这个日期时间对象进行计算 9 d_after = d + td # 日期加一天 10 print(d_after) 11 d_before = d - td # 日期减一天 12 print(d_before) 13 ? 14 # 输出结果: 15 1 day, 0:00:00 16 2020-05-23 17 2020-05-21
1 """datetime模块中的timedelta""" 2 import datetime 3 ? 4 # 时间变化量的计算会产生进位,即会影响到上一级的时间 5 t = datetime.datetime(2020, 5, 22, 21, 24, 59) # 2020-05-22 21:24:59 6 td = datetime.timedelta(seconds=3) # 时间变化量为3秒 7 new_t = t + td # 新时间=原时间+3秒 8 print(new_t) 9 ? 10 # 输出结果: 11 2020-05-22 21:25:02
timedelta与date/datetime/timedelta之间的计算timedelta与date的计算1 """timedelta与date/datetime/timedelta之间的计算""" 2 ? 3 import datetime 4 ? 5 # create a timedelta object 6 td = datetime.timedelta(days=3) 7 ? 8 # timedelta与date的计算 9 d = datetime.date(2015, 8, 8) 10 new_day = d + td 11 print(new_day) 12 print(type(new_day)) # 查看新日期new_day的类型 13 ? 14 # 输出结果: 15 2015-08-11 # 看不到秒数 16 <class ‘datetime.date‘> # 与原来日期的类型一致
timedelta与datetime的计算1 """timedelta与date/datetime/timedelta之间的计算""" 2 ? 3 import datetime 4 ? 5 # create a timedelta object 6 td = datetime.timedelta(days=3) 7 ? 8 # timedelta与datetime的计算 9 d = datetime.datetime(2015, 8, 8) 10 new_day = d + td 11 print(new_day) 12 print(type(new_day)) # 查看新日期new_day的类型 13 ? 14 # 输出结果: 15 2015-08-11 00:00:00 # 可以有秒数输出 16 <class ‘datetime.datetime‘> # 与原来日期的类型一致
timedelta与timedelta的计算1 """timedelta与date/datetime/timedelta之间的计算""" 2 ? 3 import datetime 4 ? 5 # create a timedelta object 6 td = datetime.timedelta(days=3) 7 ? 8 # timedelta与timedelta的计算 9 td1 = datetime.timedelta(seconds=50) 10 new_td = td + td1 11 print(new_td) 12 print(type(new_td)) # 查看新时间段的类型 13 ? 14 # 输出结果: 15 3 days, 0:00:50 16 <class ‘datetime.timedelta‘> # 与原来时间段的类型一致
一个例子:计算某一年的2月份有多少天
普通算法:
先判断这一年是平年还是润年
平年 - 28天;润年 - 29天
使用datetime模块的算法:
先获取这一年的3月1日
从3月1日减去1天,看得到的日期是几号
若是2月28日 - 平年 - 28天;若是2月29日 - 润年 - 29天
1 """一个例子:计算某一年的2月份有多少天 2 ? 3 普通算法: 4 1. 先判断这一年是平年还是润年 5 2. 平年 - 28天;润年 - 29天 6 ? 7 使用datetime模块的算法: 8 1. 先获取这一年的3月1日 9 2. 从3月1日减去1天,看得到的日期是几号 10 3. 若是2月28日 - 平年 - 28天;若是2月29日 - 润年 - 29天""" 11 import datetime 12 ? 13 # 从键盘输入一个年份 14 year = input(‘Please enter a year: ‘) 15 # 创建该年份的date对象 16 day = datetime.date(int(year), 3, 1) 17 # 创建一天的时间变化量 18 td = datetime.timedelta(days=1) 19 # 将day减去一天,得到3月1日的前一天 20 new_day = day - td 21 # if new_day.day == 28: 22 # print(‘February in the year %s is 28 days‘ % year) 23 # else: 24 # print(‘February in the year %s is 29 days‘ % year) 25 print(‘February in the year %s is %d days‘ % (year, new_day.day)) 26 ? 27 # 输出结果: 28 Please enter a year: 2015 29 February in the year 2015 is 28 days 30 ? 31 Please enter a year: 2020 32 February in the year 2020 is 29 days
标签:fence toc cond class red 时分秒 unit enc inner
原文地址:https://www.cnblogs.com/cxysailor/p/12940489.html