1. 程式人生 > >【Python程式設計】自由管理時間之time模組

【Python程式設計】自由管理時間之time模組

Python_自由管理時間


程式設計中時間的使用場景

  • 檔案屬性
  • 資料庫
  • 頁面UI顯示
  • 定時
  • 日誌

一、時間戳

1.1、時間戳相關的概念

時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。通俗的講, 時間戳是一份能夠表示一份資料在一個特定時間點已經存在的完整的可驗證的資料。

自建時間戳不具備法律效力

可信時間戳即由國家法定時間源來負責保障時間的授時和守時監測,任何機構包括時間戳中心自己不能對時間進行修改以保障時間的權威,只有這樣產生的時間戳才具有法律效力。

1.2、時區(Time Zone)

世界各地區與國家經度不同,地方時也有所不同。正式的時區劃分,其中包括24個時區,每一時區由一個英文字母表示。地球是自西向東自轉,東邊比西邊先看到太陽,東邊的時間也比西邊的早。東邊時刻與西邊時刻的差值不僅要以時計,而且還要以分和秒來計算,這給人們帶來不便。為了克服時間上的混亂,1884年在華盛頓召開的一次國際經度會議(又稱國際子午線會議)上,規定將全球劃分為24個時區(東、西各12個時區)。規定英國(格林尼治天文臺舊址)為中時區(零時區)、東1-12區,西1-12區。

二、程式碼中的時間


  • 時間戳(timestamp):1473525444 1525404023
  • 時間字串(Format String):2015-02-14 10:25:00
  • 結構化的時間(struct_time):(year=2018, month=5, day=1, hour=16, min=37, sec=6)

三、在Python中常用的時間模組有哪些?

  • time
  • datetime
  • python-dateutil (pip install) 安裝

3.1、常用的操作

  • 時間各種格式的表示
  • 時間的加減運算

四、時間模組的引用

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import time

print(time.time())
>>>1542213744.0470088

匯入time庫,其中裡面有一個方法叫做,time.time() 返回的是時間戳.

4.1、通過時間戳對執行程式碼進行時間計算

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

class Yankerp_time():
    def __init__(self):
        self.date = time.time()

    def your_name(self):
        Your_name = input("Please input your name:")
        Your_pass = input("Please input your age:")
        stop_time = time.time()
        self.result(stop_time)

    def result(self, result_time):
        print(f"執行程式碼結束,用時時間為{result_time - self.date}秒")

Time = Yankerp_time()
Time.your_name()
>>>
Please input your name:延凱
Please input your age:99
執行程式碼結束,用時時間為3.7180070877075195

4.2、使用time.sleep() 對程式碼執行時間進行控制

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

for i in range(5):  
    time.sleep(1)
    print(i)
>>> # 在執行的過程當中每過一秒會輸出一個數字。這個和Shell指令碼中的Sleep是類似的。
0
--------> 一秒後
1
--------> 一秒後
2
--------> 一秒後
3
--------> 一秒後
4

4.3、結構化時間與時間戳的轉換

結構化時間使用time.localtime()模組來使用如下:

print(time.localtime())
>>>
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=58, tm_sec=12, tm_wday=3, tm_yday=319, tm_isdst=0)

結構化時間轉換為時間戳

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

print(time.time()) # 輸出時間戳
print(time.localtime(time.time())) # 將時間戳轉換為結構化時間
print(time.localtime(1542214796)) # 第二種方法.
>>>
1542214846.4004872
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=0, tm_sec=46, tm_wday=3, tm_yday=319, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=59, tm_sec=56, tm_wday=3, tm_yday=319, tm_isdst=0)

將結構化時間轉換為時間戳

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

print(time.localtime())
print(time.mktime(time.localtime()))\
>>>
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=3, tm_sec=37, tm_wday=3, tm_yday=319, tm_isdst=0)
1542215017.0
Index Attribute Values
0 tm_year (for example, 1993)
1 tm_mon range [1, 12]
2 tm_mday range [1, 31]
3 tm_hour range [0, 23]
4 tm_min range [0, 59]
5 tm_sec range [0, 61]; see (2) in strftime() description
6 tm_wday range [0, 6], Monday is 0
7 tm_yday range [1, 366]
8 tm_isdst 0, 1 or -1; see below
N/A tm_zone abbreviation of timezone name
N/A tm_gmtoff offset east of UTC in seconds

4.4、結構化時間與字串格式轉換

time.strftime

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

print(time.strftime("%Y-%m-%d %X", time.localtime()))
>>>
2018-11-15 01:09:56

字串格式時間轉換為結構化時間

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

print(time.strftime("%Y-%m-%d %X", time.localtime())) 

print(time.strptime("2018-11-15 01:09:56", "%Y-%m-%d %X"))
>>>
2018-11-15 01:11:13
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=9, tm_sec=56, tm_wday=3, tm_yday=319, tm_isdst=-1)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

print(time.strftime("%Y-%m-%d %X", time.localtime(time.time())))
print(time.strptime("2018-11-15 01:13:57", "%Y-%m-%d %X"))
>>>
2018-11-15 01:14:32
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=13, tm_sec=57, tm_wday=3, tm_yday=319, tm_isdst=-1)