在Python中稽莉,通常有這幾種方式來表示時(shí)間:
1,時(shí)間戳(timestamp):通常來說涩搓,時(shí)間戳表示的是從1970年1月1日00:00:00開始按秒計(jì)算的偏移量污秆。我們運(yùn)行“type(time.time())”,返回的是float類型昧甘。
2良拼,格式化的時(shí)間字符串(Format String)
3,結(jié)構(gòu)化的時(shí)間(struct_time):struct_time元組共有9個(gè)元素共九個(gè)元素:(年充边,月庸推,日,時(shí),分贬媒,秒聋亡,一年中第幾周,一年中第幾天际乘,夏令時(shí))(tuple)
import time
#--------------------------我們先以當(dāng)前時(shí)間為準(zhǔn),讓大家快速認(rèn)識(shí)三種形式的時(shí)間
print(time.time()) # 時(shí)間戳:1487130156.419527
print(time.strftime("%Y-%m-%d %X")) #格式化的時(shí)間字符串:'2017-02-15 11:40:53'
print(time.localtime()) #本地時(shí)區(qū)的struct_time
print(time.gmtime())? ? #UTC時(shí)區(qū)的struct_time
其中計(jì)算機(jī)認(rèn)識(shí)的時(shí)間只能是'時(shí)間戳'格式坡倔,而程序員可處理的或者說人類能看懂的時(shí)間有: '格式化的時(shí)間字符串','結(jié)構(gòu)化的時(shí)間'?蚓庭,于是有了下圖的轉(zhuǎn)換關(guān)系
#--------------------------按圖1轉(zhuǎn)換時(shí)間
# localtime([secs])
# 將一個(gè)時(shí)間戳轉(zhuǎn)換為當(dāng)前時(shí)區(qū)的struct_time致讥。secs參數(shù)未提供,則以當(dāng)前時(shí)間為準(zhǔn)器赞。
time.localtime()
time.localtime(1473525444.037215)
# gmtime([secs]) 和localtime()方法類似垢袱,gmtime()方法是將一個(gè)時(shí)間戳轉(zhuǎn)換為UTC時(shí)區(qū)(0時(shí)區(qū))的struct_time。
# mktime(t) : 將一個(gè)struct_time轉(zhuǎn)化為時(shí)間戳港柜。
print(time.mktime(time.localtime()))#1473525749.0
# strftime(format[, t]) : 把一個(gè)代表時(shí)間的元組或者struct_time(如由time.localtime()和
# time.gmtime()返回)轉(zhuǎn)化為格式化的時(shí)間字符串请契。如果t未指定,將傳入time.localtime()夏醉。如果元組中任何一個(gè)
# 元素越界爽锥,ValueError的錯(cuò)誤將會(huì)被拋出。
print(time.strftime("%Y-%m-%d %X", time.localtime()))#2016-09-11 00:49:56
# time.strptime(string[, format])
# 把一個(gè)格式化時(shí)間字符串轉(zhuǎn)化為struct_time畔柔。實(shí)際上它和strftime()是逆操作氯夷。
print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
#time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6,
#? tm_wday=3, tm_yday=125, tm_isdst=-1)
#在這個(gè)函數(shù)中,format默認(rèn)為:"%a %b %d %H:%M:%S %Y"靶擦。
#--------------------------按圖2轉(zhuǎn)換時(shí)間
# asctime([t]) : 把一個(gè)表示時(shí)間的元組或者struct_time表示為這種形式:'Sun Jun 20 23:21:05 1993'腮考。
# 如果沒有參數(shù),將會(huì)將time.localtime()作為參數(shù)傳入玄捕。
print(time.asctime())#Sun Sep 11 00:43:43 2016
# ctime([secs]) : 把一個(gè)時(shí)間戳(按秒計(jì)算的浮點(diǎn)數(shù))轉(zhuǎn)化為time.asctime()的形式踩蔚。如果參數(shù)未給或者為
# None的時(shí)候,將會(huì)默認(rèn)time.time()為參數(shù)枚粘。它的作用相當(dāng)于time.asctime(time.localtime(secs))馅闽。
print(time.ctime())? # Sun Sep 11 00:46:38 2016
print(time.ctime(time.time()))? # Sun Sep 11 00:46:38 2016
1#--------------------------其他用法
2# sleep(secs)
3# 線程推遲指定的時(shí)間運(yùn)行,單位為秒馍迄。
--------------datatime-------------
#時(shí)間加減
import datetime
# print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
#print(datetime.date.fromtimestamp(time.time()) )? # 時(shí)間戳直接轉(zhuǎn)成日期格式 2016-08-19
# print(datetime.datetime.now() )
# print(datetime.datetime.now() + datetime.timedelta(3)) #當(dāng)前時(shí)間+3天
# print(datetime.datetime.now() + datetime.timedelta(-3)) #當(dāng)前時(shí)間-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #當(dāng)前時(shí)間+3小時(shí)
# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #當(dāng)前時(shí)間+30分
#
# c_time? = datetime.datetime.now()
# print(c_time.replace(minute=3,hour=2)) #時(shí)間替換