#! /usr/bin/python # coding=utf-8 from datetime import datetime,timedelta """ timedelta表明两个datetime之间的时间差 """ now = datetime.now() past = past = datetime(2010,11,12,13,14,15,16) timespan = now - past #这会获得一个负数 past - now attrs = [ ("days","日"),( 'seconds',"秒"),( 'microseconds',"毫秒") #('min',"最小"),( 'max',"最大"), ] for k,v in attrs: "timespan.%s = %s #%s" % (k,getattr(timespan, k),v) """ 总共相差的秒数 """ timespan.total_seconds() """ 实例化一个timespan 请注意它的参数顺序 timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]]) """ timespan = timedelta(days=1) now - timespan #返回的是datetime型 now + timespan timespan * 2 #还能够乘哦。表明二倍 timespan / 13 #增长一个月 from calendar import monthrange now + timedelta(days=monthrange(start.year,start.month)[1])
实例2:python
‘’‘当前的时间上加一天或一年减一天等操做’‘’django
日期经常使用问题 app
在使用Django时,默认是开启对多时区的支持的,在获取时间的时候会是以下形式:python2.7
datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=<UTC>)函数
咱们能够利用django.utils.timezone中提供的localtime方法来将该时间转换为本地时间:post
1
2
3
4
|
>>> dt
datetime.datetime(
2014
,
4
,
18
,
15
,
37
,
7
, tzinfo
=
<UTC>)
>>> localtime(dt)
datetime.datetime(
2014
,
4
,
18
,
23
,
37
,
7
, tzinfo
=
<LocalTimezone>)
|
有时候,咱们须要将该时间与当前时间作比较,例如计算差值,你可能会想到直接这么作:spa
1
2
3
|
>>>
import
datetime
>>> now
=
datetime.datetime.now()
>>> now
-
dt
|
不过这是不对的,并告知以下错误:code
1
2
3
|
Traceback (most recent call last):
File
"<console>"
, line
1
,
in
<module>
TypeError: can't subtract offset
-
naive
and
offset
-
aware datetimes
|
问题就出在利用datetime.datetime.now()获得的当前时间是offset-naive的,而另一个倒是offset-aware的,所以咱们须要将这里的dt转成与now同样的形式,能够这么作:blog
1
2
3
4
5
|
>>> dt
=
dt.replace(tzinfo
=
None
)
>>> dt
datetime.datetime(
2014
,
4
,
18
,
15
,
37
,
7
)
>>> now
-
dt
datetime.timedelta(
0
,
34108
,
443000
)
|
备注:1:timezone 获取的日期增长和修改(好比加一天减一天) ip
from django.utiles import timezone
from datetime
t1 = timezone.now()
# torrow
t1+datetime.timedelta(days=1,hours=1)
2:python获得两个时间段的每一天的列表
begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d") end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d") while begin_date <= end_date: date_str = begin_date.strftime("%m-%d") date_list.append(date_str) begin_date += datetime.timedelta(days=1) print date_list
# 方法2(安装boto3 库 pip install boto3):
from datetime import datetime
from dateutil.rrule import rrule, DAILY
a = datetime(2009, 5, 30)
b = datetime(2009, 6, 9)
for dt in rrule(DAILY, dtstart=a, until=b):
print dt.strftime("%Y-%m-%d")
# 在原来日期上增长一年
from dateutil.relativedelta import relativedelta
from django.utils import timezone
t1 = timezone.now()
neww_year = t1 + relativedelta(years=1)