Pythondatetime模块中datetime类的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chuan_day/article/details/73729329

Pythondatetime模块中datetime类的使用


主要记录下datetime类的一些用法,在碰到时间相关的运算时有个积累。
timedelta对象表示两个不同的date或者time的持续时间,类似于一个时间间隔。

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

类定义,有很多参数,不过内部存储的只有days,seconds和microseconds,从文档的介绍可以看出其他的都是通过这三个单位来换算的(当然这个也不是特别重要,也不一定准确)
,换算的方法:
1毫秒 = 1000微妙
一分钟 = 60秒
一小时 = 3600秒
一星期 = 7天
从文档的这个换算方式也是印证了我的猜想。
datetime类是date和time的合集: 
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

其中这些参数的范围是:
MINYEAR <= year <= MAXYEAR 
1 <= month <= 12 
1 <= day <= number of days in the given month and year 
0 <= hour < 24 
0 <= minute < 60 
0 <= second < 60 
0 <= microsecond < 1000000 
其中MINYEAR和MAXYEAR是常量,分别为1和9999
如果超过了这些参数的范围会报ValueError错误。
datetime对象的操作包含以下几种:
datetime2 = datetime1 + timedelta 
datetime2 = datetime1 - timedelta 
timedelta = datetime1 - datetime2 
datetime1 < datetime2
下面一一记录:
datetime2 = datetime1 + timedelta
加3天 
>>> now = datetime.now()
>>> now
datetime.datetime(2017, 6, 25, 20, 53, 40, 36492)
>>> day =  timedelta(days=3)
>>> now + day
datetime.datetime(2017, 6, 28, 20, 53, 40, 36492)

这样就加上了三天。
加1年
>>> days =  timedelta(days=365)
>>> now + days
datetime.datetime(2018, 6, 25, 20, 53, 40, 36492)
>>>

这里在timedelta对象上指定的参数是days,并没有year参数,如果指定了year或者years参数就会报错:
>>> days =  timedelta(year=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'year' is an invalid keyword argument for this function
>>> days =  timedelta(years=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'years' is an invalid keyword argument for this function
>>>

这里需要注意的是datetime的不能超过各类对象的参数值得范围。
datetime2 = datetime1 - timedelta与相加是一样的。
timedelta = datetime1 - datetime2
>>> now = datetime.now()
>>> now1 = datetime.now()+ timedelta(days=3)
>>> intervaldays = now1-now
>>> intervaldays
datetime.timedelta(3, 14, 538899)
>>> intervaldays.days
3
>>> intervaldays.seconds
14
>>> intervaldays.microseconds
538899

再一个就是比较两个datetime对象的
datetime1 < datetime2
>>> now1 > now
True

datetime有很多很有用的方法
weekday,isoweekday前者是星期一为0周日为6,后者是周一为1周日为7
>>> datetime.weekday(now)
6
>>> datetime.isoweekday(now)
7
>>>

当然也可以按照datetime的构造中的参数名来显示相关的数据:
>>> now.day
25
>>> now.year
2017
>>> now.minute
0
>>> now.second
43
>>> now.month
6
>>> now.hour
21
>>>
combine函数可以将date和time对象合并起来
>>> d = date(2005, 7, 14)
>>> t = time(12, 30)
>>> datetime.combine(d, t)
datetime.datetime(2005, 7, 14, 12, 30)


strftime函数可以格式化datetime这个在上一篇博客中已经介绍。

这些方法在一般的使用当中基本已经够了,以后用到其他函数场景时,再记录。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/chuan_day/article/details/73729329