两个日期之差:
>>> tt=datetime.datetime.strptime("2013-10-11",'%Y-%m-%d')
>>> print tt
2013-10-11 00:00:00
>>> tt1=datetime.datetime.strptime("2013-10-13",'%Y-%m-%d')
>>> print tt1
2013-10-13 00:00:00
>>> print tt1-tt
2 days, 0:00:00
>>> print (tt1-tt).days
2
当有人问你昨天是几号,是很容易就得到答案的,但当要计算出100天前是几号,就不那么容易得出了。而Python中datetime的timedelta则可以轻松完成计算
例如:
import datetime
(datetime.datetime.now() -datetime.timedelta(days = 100)).strftime("%Y-%m-%d")
附:
datetime模块定义了下面这几个类:
datetime.date:表示日期的类,
常用的属性有year, month, day;
datetime.time:表示时间的类,
常用的属性有hour, minute, second, microsecond;
datetime.datetime:表示日期时间,
datetime.timedelta:表示时间间隔,即两个时间点之间的长度
datetime.tzinfo:与时区有关的相关信息
获取当前时间,并通过字符串输出。
格式为:%Y-%m-%d %H:%M:%S'
datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S' )
获取当前时间,但只保留日期
datetime.datetime.now().date()
将字符串转换为datetime类型
输入字符串的格式为:'%Y-%m-%d'
datetime.datetime.strptime(time,'%Y-%m-%d')
附录:
格式化符号汇总
%a 星期几的简写 Weekday name,abbr.
%A 星期几的全称 Weekday name,full
%b 月分的简写 Month name,abbr.
%B 月份的全称 Month name,full
%c 标准的日期的时间串 Completedate and time representation
%d 十进制表示的每月的第几天 Day ofthe month
%H 24小时制的小时 Hour (24-hourclock)
%I 12小时制的小时 Hour (12-hourclock)
%j 十进制表示的每年的第几天 Day ofthe year
%m 十进制表示的月份 Month number
%M 十时制表示的分钟数 Minutenumber
%S 十进制的秒数 Second number
%U 第年的第几周,把星期日做为第一天(值从0到53)Week number(Sunday first weekday)
%w 十进制表示的星期几(值从0到6,星期天为0)weekdaynumber
%W 每年的第几周,把星期一做为第一天(值从0到53) Week number(Monday first weekday)
%x 标准的日期串 Complete daterepresentation (e.g. 13/01/08)
%X 标准的时间串 Complete timerepresentation (e.g. 17:02:10)
%y 不带世纪的十进制年份(值从0到99)Year numberwithin century
%Y 带世纪部分的十制年份 Yearnumber
%z,%Z时区名称,如果不能得到时区名称则返回空字符。Name of time zone
%% 百分号
#! /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])