datetime的时间处理逻辑

来源:互联网 发布:南阳炳盛网络 编辑:程序博客网 时间:2024/05/21 18:25

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]

0 0
原创粉丝点击