time子產品
一、time子產品基礎
三個時間表示:1.時間戳;2.結構化時間;3.格式化時間;
1.時間戳
從1970年1月1日到現在的秒數;
2.結構化時間
一個時間的元組; 内容如下:time.structtime(tmyear=2018, tmmon=1, tmmday=19, tmhour=10, tmmin=39, tmsec=45, tmwday=4, tmyday=19, tmisdst=0)
依次為:
tm_year 年份(包括世紀,如1998)
tm_mon 月(1-12)
tm_mday 天(1-31)
tm_hour 小時(0-23)
tm_min 分鐘(到59)
tm_sec 秒(到59)
tm_wday 一周的第幾天(0-6,星期一是0)
tm_yday 一年中的第幾天(一天一年,1-366)
tm_isdst 夏令時(夏時制)标志(- 1, 0或1)
3.格式化時間
例如: 2018-01-19 10:43:36
二、 time子產品方法
官方time子產品介紹: https://docs.python.org/3/library/time.html
1. asctime(...)
asctime([tuple]) -> string
将 結構化時間 轉化為 字元串形式;當不指定參數時,預設使用localtime;
例如:
import time
t_time=time.localtime() # t_time = time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=10, tm_min=57, tm_sec=15, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.asctime(t_time)) # 輸出 Fri Jan 19 10:57:15 2018
2. clock(...)
clock() -> floating point number
記錄CPU使用的時間。
例如:當執行 print(time.clock()) 時,記錄CPU執行print語句的時間;
3. ctime(...)
ctime(seconds) -> string
指定參數秒數,傳回一個字元串時間。
如果指定參數,則傳回時間是: 零時區1970年1月1日0點0分0秒時的目前時區localtime + 指定的秒數。
如果未指定參數,則傳回時間為:目前的本地時間localtime
假如現在中原標準時間是東八區,指定秒數30: time.ctime(30),則傳回 Thu Jan 1 08:00:30 1970 ; 假如不指定秒數,則傳回目前時間 local_time
例如:
import time
print(time.ctime(30)) # 輸出 Thu Jan 1 08:00:30 1970
print(time.ctime()) # 輸出 Fri Jan 19 11:08:41 2018
print(time.localtime()) # 輸出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=08, tm_sec=41, tm_wday=4, tm_yday=19, tm_isdst=0)
4. get_clock_info(...)
get_clock_info(name: str) -> dict
暫時跳過;以後補充;
5. gmtime(...)
gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,tm_sec, tm_wday, tm_yday, tm_isdst)
指定參數秒數,傳回的格式是結構化時間;
如果指定參數,則傳回的時間為:1970年1月1日0點0分 + 指定的秒數;
如果未指定參數,則傳回 目前UTC(零時區的)時間。即東八區中原標準時間減去8小時的時間。
例如:
import time
print(time.gtime(30)) # 輸出 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0)
print(time.gtime()) # 輸出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=3, tm_min=22, tm_sec=13, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.localtime()) # 輸出本地時間 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=22, tm_sec=13, tm_wday=4, tm_yday=19, tm_isdst=0)
6. localtime(...)
localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,
tm_sec,tm_wday,tm_yday,tm_isdst)
指定參數,傳回結構化時間;
如果指定了參數,則傳回時間為:零時區1970年1月1日0點0分時,目前時區(如東八區)的localtime + 指定的秒數
如果未指定參數,則傳回時間為:目前的本地時間localtime
例如:
import time
print(time.localtime(30)) # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0)
print(time.localtime()) # time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=45, tm_sec=26, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.ctime()) # Fri Jan 19 11:45:26 2018
7. mktime(...)
mktime(tuple) -> floating point number
将結構化時間轉換為時間戳;
例如:
import time
t_time=time.localtime()
print(t_time) # time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=11, tm_min=52, tm_sec=21, tm_wday=4, tm_yday=19, tm_isdst=0)
print(time.mktime(t_time)) # 1516333941
8. monotonic(...)
monotonic() -> float
不能倒退的單調時鐘;以後補充
9. perf_counter(...)
perf_counter() -> float
計數器;以後補充
10. process_time(...)
process_time() -> float
用于分析的過程時間:核心和使用者空間CPU時間之和。
11. sleep(...)
sleep(seconds)
睡眠指定的秒數;必須指定,可以為浮點數;
12. strftime(...)
strftime(format[, tuple]) -> string
根據指定的時間格式将時間元組轉換成字元串。如果不指定時間元組,則預設使用localtime。
例如:
import time
t_time=time.localtime() # t_time = time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=13, tm_min=2, tm_sec=3, tm_wday=4, tm_yday=19, tm_isdst=0)
time.sleep(5)
print(time.strftime('%Y-%m-%d %H:%M:%S',t_time)) #輸出 2018-01-19 13:02:03
常用格式碼:
%Y 以十進制數字表示的年 例如2018.
%m 十進制表示的月 [01,12].
%d 十進制表示的天 [01,31].
%H 十進制表示的小時 [00,23].
%M 十進制表示的分鐘 [00,59].
%S 十進制表示的秒 [00,61].
%z 相對UTC的偏移量;如果東區為+,西區為-;例如東八區 +0800.
%a 本地時區目前的工作日縮寫,即星期;例如:星期五 Fri.
%A 本地時區目前的工作日全寫,即星期;例如:星期五 Friday.
%b 本地時區目前的月份縮寫,即月份;例如:一月 Jan.
%B 本地時區目前的月份全寫,即月份;例如:一月 January.
%c 本地的目前時間,字元串格式;例如: Fri Jan 19 13:17:50 2018.
%I 以十進制數字表示小時,12小時制 [01,12].
%p 上午或下午,例如 AM or PM.
%j 一年中的第幾天,十進制數[001,366]。
%U 一年中的第幾周,十進制數[00,53]。星期日作為一周的第一天;在一年的第一個星期日前的幾天,都認為在第0周;
%w 一周中的第幾天,十進制數[0,6];星期日為0
%W 一年中的第幾周,十進制數[00,53]。星期一作為一周的第一天;在一年的第一個星期一前的幾天,都認為在第0周;
%x 本地時間的年月日的适當表示形式,字元串格式;例如:01/19/18 2018年1月19日。
%X 本地時間的時間适當表示形式,字元串格式;例如:13:54:42
%y 兩位數字表示年份,沒有世紀号;十進制數;[00,99]
%Z 時區名稱(如果沒有時區,則沒有字元)。
%% %字元
13. strptime(...)
strptime(string, format) -> struct_time
根據指定的格式和字元串時間,把時間轉換為結構化時間(元組形式);兩個參數必須指定;
例如:
import time
str_time="2018-01-19 13:02:03"
print(time.strptime(str_time,'%Y-%m-%d %H:%M:%S')) # 輸出 time.struct_time(tm_year=2018, tm_mon=1, tm_mday=19, tm_hour=13, tm_min=23, tm_sec=9, tm_wday=4, tm_yday=19, tm_isdst=-1)
常用格式碼:和上面一樣。
14. time(...)
time() -> floating point number
從紀元開始以秒為機關傳回目前時間;即時間戳;如果系統支援,則可能傳回浮點數,即更精确;
三、補充一點datetime子產品
import datetime
now_time=datetime.datetime.now()
print(now_time) # 輸出 2018-01-19 15:21:28.702212
平時我們也可以用這個取時間。
datetime####### 擷取目前的日期和時間
from datetime importdatetime
now_time=datetime.now()print(now_time) #2015-05-18 16:28:07.198690
####### 擷取指定日期和時間
from datetime importdatetime
dt= datetime(2015, 4, 19, 12, 20) #用指定日期時間建立datetime
print(dt) #2015-04-19 12:20:00
####### 将時間轉換為時間戳
from datetime importdatetime
dt= datetime(2015, 4, 19, 12, 20) #用指定日期時間建立datetime
dt.timestamp() #把datetime轉換為timestamp 1429417200.0
####### 将時間戳轉換為時間
from datetime importdatetime
t= 1429417200.0
print(datetime.fromtimestamp(t)) #2015-04-19 12:20:00
####### 将字元串轉換為時間
from datetime importdatetime
cday= datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')print(cday) #2015-06-01 18:19:59
####### 将時間轉換為字元串
from datetime importdatetime
now=datetime.now()print(now.strftime('%a, %b %d %H:%M')) #Mon, May 05 16:28
####### 時間的加減
from datetime importdatetime, timedelta
now=datetime.now()print(now) #10小時後的日期。輸出 datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)的結果
now + timedelta(hours=10) #輸出 datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)的結果
now - timedelta(days=1) #1day前的時間。輸出 datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)的結果
now + timedelta(days=2, hours=12) #2天12小時後的日期。輸出 datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)的結果