python的timedelta

两个日期之差:

>>> 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天前是几号,就不那么容易得出了。而Pythondatetimetimedelta则可以轻松完成计算

例如:

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 第年的第几周,把星期日做为第一天(值从053Week number(Sunday first weekday)

%w 十进制表示的星期几(值从06,星期天为0weekdaynumber

%W 每年的第几周,把星期一做为第一天(值从053 Week number(Monday first weekday)

%x 标准的日期串 Complete daterepresentation (e.g. 13/01/08)

%X 标准的时间串 Complete timerepresentation (e.g. 17:02:10)

%y 不带世纪的十进制年份(值从099Year 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])

posted on 2013-05-08 16:25  代码王子  阅读(419)  评论(0编辑  收藏  举报

导航