孤荷凌寒自学python第二十七天python的datetime
孤荷凌寒自学python第二十七天python的datetime模块及初识datetime.date模块
(完整学习过程屏幕记录视频地址在文末,手写笔记在文末)
一、datetime模块
datetime模块包含以下子模块:
(一) 表示时刻点 的模块
datetime.date
datetime.time
datetime.datetime
datetime.datetime_CAPI
(二) 表示时间间隔(时间长度)的模块
datetime.delta
(三) 表示时区信息的模块
datetime.tzinfo
二、datetime模块表示时间的起止极限
datetime模块能表达1-9999年的所有时间。
有两个相关常量
datetime.MINYEAR =1
datetime.MAXYEAR=9999
三、初识 datetime.date子模块
datetime.date实例化时的初始形参有三个:年、月、日
执行初始化即可得到一个实例化的datetime.date对象:
测试:
>>> import datetime
>>> dateTemp=datetime.date(2018,10,8)
>>> print(dateTemp)
2018-10-08
四、datetime.date对象的常用属性
最常用的属性有四个:
year 返回日期中的 年
month 返回日期中的 月
day 返回日期中的 日
__getattribute__ 获取日期对象中指定的属性
下面继续上面的测试(只有新增加的代码部分)
>>> intY=dateTemp.year
>>> intM=dateTemp.month
>>> intD=dateTemp.day
>>> print(intY,intM,intD)
2018 10 8
>>> intY2=dateTemp.__getattribute__('year')
>>> print(intY2)
2018
五、比较两个 datetime.date对象的大小
使用 datetime.date 对象的以下内部 方法 比较 当前datetime.date对象与另一个datetime.date对象的大小:
测试如下:
import datetime
dateOne=datetime.date(2018,6,30)
dateTwo=datetime.date(2018,7,1)
print(dateOne.__eq__(dateTwo)) #dateOne是否等于dateTwo
print(dateOne.__ge__(dateTwo)) #dateOne是否大于等于dateTwo
print(dateOne.__gt__(dateTwo)) #dateOne是否大于dateTwo
print(dateOne.__le__(dateTwo)) #dateOne是否小于等于dateTwo
print(dateOne.__lt__(dateTwo)) #dateOne是否小于dateTwo
print(dateOne.__ne__(dateTwo)) #dateOne是否不等于dateTwo
以上所有方法都返回 布尔对象 True 或 False
六、两个datetime.date对象的减法操作
1 正向相减(当前日期对象减去后面参数的日期对象)
x.__sub__(y) 表示x-y
2 反向相减 (后面的参数的日期对象减去当前日期对象)
x.__rsub__(y) 表示y-x
执行datetime.date对象的这两个方法后,返回的是一个:
datetime.timedelta
对象。
七、对datetime.date对象的国际化处理(iso标准)
1 isocalendar()
执行此方法 ,将返回一个元组,此元组对象有三个元素,先后顺序排列为:
年、一年的第几周、星期几(1表示星期一)
测试:
>>> import datetime
>>> a=datetime.date(2017,3,22)
>>> tpl=a.isocalendar()
>>> print(tpl)
(2017, 12, 3)
2 isoformat() __str__()
执行此方法,将返回国际标准的日期字符串:
YYYY-MM-DD
在操作系统日期环境设置为中文的情况下,__str__()方法返回结果与isoformat()方法一样。
测试:
>>> import datetime
>>> d=datetime.date(2018,10,9)
>>> strA=d.isoformat()
>>> strB=d.__str__()
>>> print(strA,strB)
2018-10-09 2018-10-09
3 isoweekday()
执行此方法 将返回 星期几对应的数字 1-7,其中1表示星期一,7表示星期日
继续上面的测试(以下代码只有新增的代码 部分)
>>> intWeekDay=d.isoweekday()
>>> print(intWeekDay)
2
八、datetime.date对象的其它方法
1 weekday()
执行此方法 将返回 星期几对应的数字 0-6 ,其中0表示星期一,6表示星期日
2 timetuple()
执行此方法 将把当前datetime.date对象转换成time模块中的 struct_time(标准时间元组)对象。
但datetime.date对象中没有时间信息,那么,转换后的struct_time(标准时间元组)对象中的所有与时间相关的值都用0来填充。
继续上面的测试(以下代码只有新增的代码 部分):
>>> tplStruct_Time=d.timetuple()
>>> print(tplStruct_Time)
time.struct_time(tm_year=2018, tm_mon=10,tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=282, tm_isdst=-1)
——————————
今天整理的学习笔记完成,最后例行说明下我的自学思路:
根据过去多年我自学各种编程语言的经历,认为只有真正体验式,解决实际问题式的学习才会有真正的效果,即让学习实际发生。在2004年的时候我开始在一个乡村小学自学电脑 并学习vb6编程语言,没有学习同伴,也没有高师在上,甚至电脑都是孤岛(乡村那时还没有网络),有的只是一本旧书,在痛苦的自学摸索中,我找到适应自己零基础的学习方法:首先是每读书的一小节就作相应的手写笔记,第二步就是上机测试每一个笔记内容是否实现,其中会发现书中讲的其实有出入或错误,第三步就是在上机测试之后,将笔记改为电子版,形成最终的修订好的正确无误的学习笔记。
通过反复尝试错误,在那个没有分享与交流的黑暗时期我摸黑学会了VB6,尔后接触了其它语言,也曾听过付费视频课程,结果发现也许自己学历果然太低,就算是零基础的入门课程,其实也难以跟上进度,讲师的教学多数出现对初学者的实际情况并不了解的情况,况且学习者的个体也存在差异呢?当然更可怕的是收费课程的价格往往是自己难以承受的。
于是我的所有编程学习都改为了自学,继续自己的三步学习笔记法的学习之路。
当然自学的最大问题是会走那么多的弯路,没有导师直接输入式的教学来得直接,好在网络给我们带来无限搜索的机会,大家在网络上的学习日志带给我们共享交流的机会,而QQ群等交流平台、网络社区的成立,我们可以一起自学,互相批评交流,也可以获得更有效,更自主的自学成果。
于是我以人生已过半的年龄,决定继续我的编程自学之路,开始学习python,只希望与大家共同交流,一个人的独行是可怕的,只有一群人的共同前进才是有希望的。
诚挚期待您的交流分享批评指点!欢迎联系我加入从零开始的自学联盟。
这个时代互联网成为了一种基础设施的存在,于是本来在孤独学习之路上的我们变得不再孤独,因为网络就是一个新的客厅,我们时刻都可以进行沙龙活动。
非常乐意能与大家一起交流自己自学心得和发现,更希望大家能够对我学习过程中的错误给予指点——是的,这样我就能有许多免费的高师了——这也是分享时代,社区时代带来的好福利,我相信大家会的,是吧!
根据完全共享的精神,开源互助的理念,我的个人自学录制过程是全部按4K高清视频录制的,从手写笔记到验证手写笔记的上机操作过程全程录制,但因为4K高清文件太大均超过5G以上,所以无法上传至网络,如有需要可联系我QQ578652607对传,乐意分享。上传分享到百度网盘的只是压缩后的720P的视频。
我的学习过程录像百度盘地址分享如下:(清晰度:1280x720)
链接:https://pan.baidu.com/s/1sxoKKui9oqis5cPSnPam0w密码:msqa
喜马拉雅语音笔记: