http://blog.csdn.net/followingturing/article/details/7987809  Python时间处理


简介

一般有两种表示时间的方式:
第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同

year (four digits, e.g. 1998)
month (1-12)
day (1-31)
hours (0-23)
minutes (0-59)
seconds (0-59)

……


函数介绍

time.time() 获取当前时间戳
time.localtime() 当前时间戳的struct_time形式
time.ctime() 当前时间戳的字符串形式

time.asctime()将一个struct_time(默认为当时时间),转换成字符串

time.clock():

该函数有两个功能,
在第一次调用的时候,返回的是程序运行的实际时间;
以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔


time.strftime():
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59

……

>>> time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
'2014-05-31 22:47:47'
>>> time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
'Sat May 31 22:56:48 2014'
>>> s = '2014-5-20'
>>> a = time.strptime(s,'%Y-%m-%d')
>>> time.strftime('%c',a)
'05/20/14 00:00:00'


time.strptime():

将时间字符串根据指定的格式化符转换成数组形式的时间

>>> s="2006-1-2"
>>> time.strptime(s,"%Y-%m-%d)



演示计算两个日期相差天数的计算

>>> import datetime
>>> d1 = datetime.datetime(2009,8,19)
>>> d2 = datetime.datetime(2014,5,15)
>>> (d2-d1).days
1730


演示计算运行时间的例子,以秒进行显示

import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print (endtime - starttime).seconds


演示计算当前时间向后10小时的时间

>>> d1 = datetime.datetime.now()
>>> d3 = d1 + datetime.timedelta(hours=10)
>>> d3.ctime()


——————————————————举例————————————————————

#-*- coding:utf-8 -*-  
import time  
import datetime  
# time , datetime , string 类型互相转换  
#  
# string -> time  
# time.strptime(publishDate,"%Y-%m-%d %H:%M:%S")  
#  
# time -> string  
# time.strftime("%y-%m-%d",t)  
date = '2007-01-01'  
print type(date)  
date = time.strptime(date,"%Y-%m-%d")  
print type(date)  
print date[0]  
d4 = datetime.datetime(date[0], date[1],date[2])  
print d4  
print type(d4)  
#将日期时间对象转成字符串则要用  
date = time.strftime("%y-%m-%d",date)  
print type(date)  
#其中date为日期时间对象


————————————————一个通用的时间计算小程序—————————————

# -*- coding:GBK -*-  
# 计算两个时间的间隔天数  
# 注意:输入月份和天时,不能输入08,09等,会被识别为 8 进制而出错!(8进制是不超过07的)  
# 解决办法:要把月份和天前面的0去掉。  
  
from datetime import datetime  
(y1,m1,d1) = input("请输入时间1(格式为2009,8,9):")  
(y2,m2,d2) = input("请输入时间2:")  
date1 = datetime(y1,m1,d1)  
date2 = datetime(y2,m2,d2)  
days = (date2-date1).days  
if (days<0):  # 如果时间相差为负数,取为正数  
    days = -days  
if (days>365):  
    print '两个时间相隔',days/365,'年',days%365,'天'  
else:  
    print '两个时间相隔',days,'天!'