一.time模块

time模块提供各种操作时间的函数

  一般有两种表示时间的方式:

  第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的

#当前时间的时间戳  

In [ 9 ]: time.time()  
Out[ 9 ]:  1376102328.536908



第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同


In [ 2 ]: time.localtime()  
Out[ 2 ]: time.struct_time(tm_year = 2013 , tm_mon = 8 , tm_mday = 10 , tm_hour = 10 , tm_min = 30 , tm_sec = 47 , tm_wday = 5 , tm_yday = 222 , tm_isdst = 0 )


 gmtime()与mktime()可以将两种时间表示方法自由转换

In [ 22 ]: time.gmtime(time.time())  
Out[ 22 ]: time.struct_time(tm_year = 2013 , tm_mon = 8 , tm_mday = 10 , tm_hour = 2 , tm_min = 46 , tm_sec = 54 , tm_wday = 5 , tm_yday = 222 , tm_isdst = 0 )


  

In [ 23 ]: time.mktime(time.localtime())  
Out[ 23 ]:  1376102845.0

 

strftime()可以将struct_time类型自由转换成字符型

In [ 24 ]: time.strftime( "%Y%m%d" , time.localtime())  
Out[ 24 ]:  '20130810'

strptime(string, format) 将时间字符串根据指定的格式化符转换成数组形式的时间

In [ 26 ]: time.strptime( '20130810' ,  "%Y%m%d" )  
Out[ 26 ]: time.struct_time(tm_year = 2013 , tm_mon = 8 , tm_mday = 10 , tm_hour = 0 , tm_min = 0 , tm_sec = 0 , tm_wday = 5 , tm_yday = 222 , tm_isdst = - 1 )


注意,不能直接将时间戳转换为字符串,时间串也不能直接转换为时间戳,只能通过localtime,利用mktime方法来转


二.datetime模块

In [ 27 ]: datetime.datetime.now()  
Out[ 27 ]: datetime.datetime( 2013 ,  8 ,  10 ,  10 ,  56 ,  10 ,  611490 )



strftime方法,可以将一个datetime型日期转换成字符串

In [ 28 ]: datetime.datetime.now().strftime( "%Y%m%d" )  
Out[ 28 ]:  '20130810'


datetime.strptime(date_string, format):将格式字符串转换为datetime对象

In [ 30 ]: datetime.datetime.strptime( "20130810" ,  "%Y%m%d" )  
Out[ 30 ]: datetime.datetime( 2013 ,  8 ,  10 ,  0 ,  0 )


三.计算当前时间的前1天

one_day_before  =  datetime.datetime.today()  -  datetime.timedelta(days = 1 )

天:days

小时:hours

分钟:minutes


四.time与datetime之间的互相转换

time 转为datetime

a  =  time.time()
datetime.datetime.fromtimestamp(a)

datetime 转为time


b  =  datetime.datetime.now()
time.mktime(b.timetuple())


参考:http://iam42.iteye.com/blog/1922875

   

      本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1760596