idea上一步下一步快捷键_一步一步学Python3(小学生也适用) 第二十八篇: Python datetime 模块下...

这一篇我们继续来学习datetime模块中的timedelta类。

四、datetime.timedelta类

timedelta表示两个时间的间隔

 datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

参数默认值为0的,代表参数都可选。

 from datetime import datetimefrom datetime import timedeltatoday = datetime.today()print(today)print(today + timedelta(days=1,hours=5))print(today + timedelta(weeks=1))

运行结果:

 2020-11-08 17:46:33.1484672020-11-09 22:46:33.1484672020-11-15 17:46:33.148467

datetime.timedelta()参数可选,weeks=1添加7天

 from datetime import datetime,datefrom datetime import timedelta#获取上个月第一天和最后一天today = datetime.today()print(today)mlast_day = date(today.year, today.month, 1) - timedelta(days=1)mfirst_day = date(mlast_day.year, mlast_day.month,1)print(mlast_day)print(mfirst_day)

运行结果:

 2020-11-08 18:01:13.6067402020-10-312020-10-01

完美的求得了上一个月的第一天和最后一天。我们更改一下代码,看能不能求出2020-1-1前一个月的第一天和最后一天

获取上一个月第一天和最后一天

 from datetime import datetime,datefrom datetime import timedelta#获取上个月第一天和最后一天today = date(2020,1,1)print(today)mlast_day = date(today.year, today.month, 1) - timedelta(1)mfirst_day = date(mlast_day.year, mlast_day.month,1)print(mlast_day)print(mfirst_day)

运行结果:

 2020-01-012019-12-312019-12-01

非常有用的技巧,不要问我为什么,因为在一个项目中,用了错误的方法,写了好大一段代码

获取时间差

 from datetime import datetime,timedeltaimport timestart_time = datetime.now()time.sleep(2)end_time = datetime.now()d_time = end_time - start_timeprint(start_time)print(end_time)print(d_time)print(d_time.microseconds)print(d_time.seconds)

运行结果:

 2020-11-08 18:17:19.4248772020-11-08 18:17:21.4258100:00:02.0009339332

由上可以看到,时间差能到微秒

 from datetime import datetime,datefrom datetime import timedeltatoday = date.today()print(today)today_weekday = today.isoweekday()print(today_weekday)last_sunday = today - timedelta(days = today_weekday)last_monday = last_sunday -timedelta(days=6)print(last_sunday)print(last_monday)

运行结果:

 2020-11-0872020-11-012020-10-26

计算指定日期当月最后一天的日期和本月天数

 from datetime import datetime,datefrom datetime import timedeltadate1 = date(2020,12,25)date2 = date(2020,9,1)def last_day_month(date_obj):    if date_obj.month == 12:        first_day_next_month = date(date_obj.year+1, 1, 1)    else:        first_day_next_month = date(date_obj.year, date_obj.month+1, 1)    last_day_this_month = first_day_next_month - timedelta(days=1)    return last_day_this_monthlast_day_this_month = last_day_month(date1)print(last_day_this_month)print(last_day_this_month.day)last_day_this_month = last_day_month(date2)print(last_day_this_month)print(last_day_this_month.day)

运行结果:

 2020-12-31312020-09-3030

五、时间日期格式化strftime和strptime

strftime

根据区域设置格式化本地时间/日间,将时间格式化为表示时间的字符串str。这样在的项目显示端,可以有多种形式的时间日期样式,比如:2020/11/8或者2020-11-8或者20-11-8等等。

 datetime.strftime("%Y-%m-%d")   #显示的格式为:2020-11-8

strptime

按时物定的时间格式将字符串转化为时间类型

 datetime.strptime(datetime_str,'%Y-%m-%d')

我们在转化时,都会用到时间日期格式化符号,如上面的%Y,%m,%d

下表为Python时间日期格式化符号:

符号

说明

%y

两位数的年份表示(00-99)

%Y

四位数的年份表示(000-9999)

%m

月份(01-12)

%d

月内中的一天(0-31)

%H

24小时制小时数(0-23)

%I

12小时制小时数(01-12)

%M

分钟数(00=59)

%S

秒(00-59)

%a

本地简化星期名称

%A

本地完整星期名称

%b

本地简化的月份名称

%B

本地完整的月份名称

%c

本地相应的日期表示和时间表示

%j

年内的一天(001-366)

%p

本地A.M.或P.M.的等价符

%U

一年中的星期数(00-53)星期天为星期的开始

%w

星期(0-6),星期天为星期的开始

%W

一年中的星期数(00-53)星期一为星期的开始

%x

本地相应的日期表示

%X

本地相应的时间表示

%Z

当前时区的名称

%%

%号本身

 from datetime import datetime,datedate_str='2020-11-8'date1 = datetime.strptime(date_str,'%Y-%m-%d')print(date1)print(type(date1))

运行结果:

 2020-11-08 00:00:00

我们把date_str,字符串时间格式转换成了datetime.datetime格式

再看一个例子:

 from datetime import datetime,datedate_str='2020-11-8'date1 = datetime.strptime(date_str,'%Y/%m/%d')print(date1)print(type(date1))

直接报错了

1db59605b86041a68deb51641a143e89.png

由上述错误我们可知,date_str和‘%Y-%m-%d’格式必须一致才能转换

我们再来把datetime.datetime转换为时间字符串str

 from datetime import datetime,datetoday = datetime.today()print(today)print(today.strftime('%Y/%m/%d %H:%M-%S'))print(today.strftime('%Y/%m/%d'))print(today.strftime('%d %b %Y'))print(today.strftime('%d %b %Y , %a'))print(today.strftime('%d %B %Y , %A'))

运行结果:

 2020-11-08 20:13:39.2273862020/11/08 20:13-392020/11/0808 Nov 202008 Nov 2020 , Sun08 November 2020 , Sunday

由示例代码我们可以看出,日期时间格式datetime.datetime我们可以组合出各种日期时间格式的字符串

结束语:

至此,我们已经把datetime模块学完,非常重要的一个时间模块。多练练就好了。

☆ END ☆ 推荐阅读: 一步一步学Python3(小学生也适用) 第二十七篇: Python datetime 模块上 一步一步学Python3(小学生也适用) 第二十六篇: Python time 模块 一步一步学Python3(小学生也适用) 第二十五篇: Python模块详解 一步一步学Python3(小学生也适用) 第二十四篇:函数return和lambda c69cd86b12583af933199c7541b5247f.png 长按关注"老树Python"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值