0
点赞
收藏
分享

微信扫一扫

Python timedelta(转)

pipu 2022-09-14 阅读 61


datetime.timedelta对象代表两个时间之间的的时间差,两个date或datetime对象相减时可以返回一个timedelta对象。


 


构造函数


class  datetime. timedelta ( [ days [ ,  seconds [ ,  microseconds [ ,  milliseconds [ ,  minutes [ ,  hours [ ,  weeks ] ] ] ] ] ] ] )


所有参数可选,且默认都是0,参数的值可以是整数,浮点数,正数或负数。


 


内部只存储 days,seconds,microseconds,其他参数的值会自动按如下规则抓转换:


 


  • 1 millisecond(毫秒) 转换成 1000 microseconds(微秒)
  • 1 minute 转换成 60 seconds
  • 1 hour 转换成 3600 seconds
  • 1 week转换成 7 days

三个参数的取值范围分别为:


 


  • 0 <= microseconds < 1000000
  • 0 <= seconds < 3600*24
  • -999999999 <= days <= 999999999

如果任意参数是float,且小数点后含有microseconds部分,那么microseconds的值为所有参数的微秒部分的总和(四舍五入)如:

 


Python timedelta(转)_python


  1. >>> datetime.timedelta(hours=1.232,seconds=20).microseconds
  2. 200000
  3. >>> datetime.timedelta(hours=1.232,seconds=20.3).microseconds
  4. 500000


 

支持的操作有:

1 = t2 + t3

两个timedelta对象相加,同时满足 t1-t2 == t3 and t1-t3 == t2 为True

t1 = t2 - t3

两个timedelta对象相减, 同时满足 t1 == t2 - t3 and t2 == t1 + t3 为True

t1 = t2 * i or t1 = i * t2

timedelta对象分别乘以i 同时满足 t1 // i == t2 为True, 且 i != 0

t1 = t2 // i

向下取整,余数部分被丢弃

+t1

返回和t1相同值的timedelta对象

-t1

取反操作,等价于​​timedelta​​(-t1.days, -t1.seconds, -t1.microseconds)和 t1* -1

abs(t)

绝对值,等价于: +t 当 t.days >= 0,  -t 当 t.days < 0

str(t)

返回字符串,格式为: [D day[s], ][H]H:MM:SS[.UUUUUU]

repr(t)

返回字符串,格式为: datetime.timedelta(D[, S[, U]])

 


此外,timedelta和可以和date,datetime对象进行加减操作,如:

 


Python timedelta(转)_python


  1. >>> datetime.datetime.now()
  2. datetime.datetime(2013, 5, 23, 10, 49, 27, 182057)
  3. >>> datetime.datetime.now()+datetime.timedelta(2)
  4. datetime.datetime(2013, 5, 25, 10, 49, 29, 385559)


Python2.7新增了方法:


 


timedelta. total_seconds ( )


用于计算秒数。等价于:(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6


 


实例1:


'''时间d距离now()的长度,比如:1分钟前,1小时前,1月前,1年前'''


 

 


Python timedelta(转)_python


  1. # -*- encoding=UTF-8 -*-
  2. import
  3. def
  4. chunks = (
  5. 60 * 60 * 24 * 365, u'年'),
  6. 60 * 60 * 24 * 30, u'月'),
  7. 60 * 60 * 24 * 7, u'周'),
  8. 60 * 60 * 24, u'天'),
  9. 60 * 60, u'小时'),
  10. 60, u'分钟'),
  11. )
  12. #如果不是datetime类型转换后与datetime比较
  13. if not
  14. d = datetime.datetime(d.year,d.month,d.day)
  15. now = datetime.datetime.now()
  16. delta = now - d
  17. #忽略毫秒
  18. 24 * 60 * 60 + delta.seconds  #python2.7直接调用 delta.total_seconds()
  19. #刚刚过去的1分钟
  20. if before <= 60:
  21. return u'刚刚'
  22. for seconds,unit in
  23. count = before // seconds
  24. if count != 0:
  25. break
  26. return unicode(count)+unit+u"前"


 实例2:

‘’‘当前的时间上加一天或一年减一天等操作’‘’

 

 


Python timedelta(转)_python


  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-

  3. from datetime import

  4. now = datetime.now()

  5. yestoday = now - timedelta(days=1)
  6. tommorow = now + timedelta(days=1)

  7. next_year = now + timedelta(days = 365)



例子:

import time

import
def datetime2timestamp(dt, convert_to_utc=False):
''' Converts a datetime object to UNIX timestamp
if
if convert_to_utc: # 是否转化为UTC时间
8) # 中国默认时区
1970,1,1))
return
return
def timestamp2datetime(timestamp, convert_to_local=False):
''' Converts UNIX timestamp to a datetime
if
dt = datetime.datetime.utcfromtimestamp(timestamp)
if convert_to_local: # 是否转化为本地时间
8) # 中国默认时区
return
return

def
return

print
print


举报

相关推荐

0 条评论