简单记录python的时间函数操作
1. time和datetime模块import datetime,time
2. 获得当前时间
time.time() #获得当前时间,返回float型
time.localtime() #获得本地当前时间,返回time.struct_time类型
说明:struct_time是一个只读的9元组,其中参数命名分别如下:
IndexAttributeValues0 tm_year(for example, 1993)1tm_mon range 2 tm_mday range 3 tm_hourrange 4 tm_min range 5 tm_sec range 6 tm_wdayrange , Monday is 07 tm_yday range 8 tm_isdst 0, 1 or -1; see below
技巧一:
那么,如果要进行如时间修改等操作,而struc_time是只读的,如何改变某个时间点的值呢?
由于元组是不可改变的,而此时需要对localtime()的元组进行处理,元组是列表的另一形式,可以相互转化,列表可以随时修改,因而可以进行如下转化:
ttTuple = time.localtime()
ttList = list(ttTuple) #转化为列表
ttList = 30 #如果您要对第四项tm_min进行修改,此时就可以了
..... #列表中值进行修改
ttTuple = tuple(ttList) #重新转化为元组
strLocaltime = time.strftime("%Y-%m-%d %X",ttTuple) #转化为2010-07-21 20:30:00
技巧二:
如何快速处理列表中的每一项数据,例如将列表中所有的整型转化为str类型,并进行字符串处理?
具体地,例如给定一个浮点时间timer,输出为一个格式为YYYY-mm-dd_hh-mm格式的字符串。
ttTuple = time.localtime(timer)
ttList = list(ttTuple)
strList = map(str,ttList) #将列表中的每项转化为str类型, 但由于是由int转化str
#单数的时间,1-9无法转化为‘01’,‘02’形式,需要处理
for i in range(5):
if(len(strList)%2 != 0):
strList = '0' + strList #单数,则补上0
strTime = strList+'-'+strList+'-'+strList+'_'+strList+'-'+strList #获得目标格式
当然,或者可以利用strLocaltime = time.strftime(format,ttTuple)来解决,没有校验过,可以试试。当时脑袋短路了,只想到这个方法,主要是为了新学的map()函数能够用上,高手请任意拍砖,咱新手一枚。
3.时间相互转化
time.strftime(format,struc_time) #将元组转化为用户自定义的format格式,返回时间字符串
time.strptime(str,format) #将format格式的时间字符串str转化为元组,返回struc_time类型
time.mktime(struc_time) #将元组转化为float类型的时间,返回float类型
>>> import time
>>> print time.strftime( "%Y-%m-%d %X", time.localtime(123456789)
... )
1973-11-30 05:33:09
>>> from datetime import datetime
>>> print datetime.fromtimestamp(123456)
1970-01-02 18:17:36
技巧三:
由上述可见,利用floatTime = time.mktime(time.strptime(str,format))可以将时间字符串转化为浮点型时间格式,便于进行时间计算.
技巧四:
常用的直接获得当前时间方法:
now = str(datetime.fromtimestamp(time.mktime(time.localtime())))
print now
技巧五:
精确到毫秒的当前方法:
now = datetime.today()
print now
页:
[1]