datetime包括datetime和date和timedelta三个常用模块,下面就功能分别介绍一下:
1、想要组一个日期和日期时间的功能:
date1 = datetime.date(2016,12,31)
>>> date1
datetime.date(2016, 12, 31)
>>>
datetime1 = datetime.datetime(2016,12,31,23,59,59)
>>> datetime1
datetime.datetime(2016, 12, 31, 23, 59, 59)
>>>
2、datetime对象和字符串之间转换
还有一个方法,就是把符合条件的字符串格式化为指定格式的对象(只能格式化为datetime类型,好像)
In [9]: str1 = '2016-12-31'
In [10]: data1 = datetime.datetime.strptime(str1,'%Y-%m-%d')
In [11]: data1
Out[11]: datetime.datetime(2016, 12, 31, 0, 0)
或者有一个datetime类型对象,格式化为指定格式的字符串:
In [16]: data1
Out[16]: datetime.datetime(2016, 12, 31, 0, 0)
In [17]: datetime_obj = datetime.datetime.strftime(data1,'%Y-%m-%d')
In [18]: datet
datetime datetime_obj
In [18]: datetime_obj
Out[18]: '2016-12-31'
3、时间的推迟或者延后处理
对于时间的推迟延后处理,由于日期比较复杂,因此通过该方法可以容易进行相互转化
In [22]: data1
Out[22]: datetime.datetime(2016, 12, 31, 0, 0)
In [23]: data2 = data1 + datetime.timedelta(days=1)
In [24]: data2
Out[24]: datetime.datetime(2017, 1, 1, 0, 0)
如果往后延迟可以是days=-1,或者直接减
data2 = data1 - datetime.timedelta(days=1)
In [26]: data2
Out[26]: datetime.datetime(2016, 12, 30, 0, 0)
In [27]: data3 = data1 + datetime.timedelta(days=-1)
In [28]: data3
Out[28]: datetime.datetime(2016, 12, 30, 0, 0)
也可以延迟时间,minutes=30,或天,分钟等处理,好像没有处理月份的参数(测试时没有,不知道有没有)
4、获取时间差
直接两个datetime对象相减,然后可以获取之间相隔的参数(days,second,delt.microseconds
)。好像只能获取秒和毫秒数,没有深挖。
delta_time = (this_sleep_time_obj-bed_time_datetime).days*24*60+(this_sleep_time_obj-bed_time_datetime).seconds/60
5、获取月份最后一天日期(calender)
import calendar
pre_month_days = calendar.monthrange(year, month)[1]