datetime的时间处理逻辑

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值