Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hàm Thời gian (Time Functions) trong Python


Python cung cấp thư viện để đọc, biểu diễn và đặt lại thông tin thời gian theo nhiều cách bằng cách sử dụng module "time". Date, time và date time là đối tượng trong Python, vì vậy bất cứ khi nào chúng ta thực hiện thao tác nào trên chúng, chúng ta thực sự thao tác trên đối tượng chứ không phải chuỗi hoặc timestamp.

Trong phần này chúng ta sẽ thảo luận module "time" cho phép xử lý các phép toán khác nhau trên thời gian.

Module time tuân theo quy ước "EPOCH" (thời điểm gốc) đề cập đến điểm bắt đầu của thời gian. Trong hệ thống Unix, thời gian "EPOCH" bắt đầu từ 1 tháng 1, 12:00 am, 1970 đến năm 2038.

Để xác định giá trị thời gian EPOCH trên hệ thống của bạn, chỉ cần gõ code dưới:

>>> import time
>>> time.gmtime(0)

Kết quả

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

Tick trong Python?

Một tick đề cập đến khoảng thời gian là số thực (floating-point) được đo bằng đơn vị giây. Đôi khi chúng ta nhận được thời gian dưới dạng Daylight Saving Time (DST), nơi đồng hồ tiến 1 giờ về phía trước vào mùa hè, và lùi lại vào mùa thu.

Các hàm phổ biến nhất trong Module Time Python:

1. Hàm time.time()

Hàm time() là hàm chính của module time. Nó đo số giây kể từ epoch dưới dạng giá trị floating point.

Cú pháp

time.time()

Chương trình minh họa hàm trên:

import time
print("Số giây trôi qua kể từ epoch là: ", time.time())

Kết quả

Số giây trôi qua kể từ epoch là: 1553262407.0398576

Chúng ta có thể dùng hàm time Python để tính thời gian Wall-clock đã trôi qua giữa hai điểm.

Dưới đây là chương trình tính Wall clock time:

import time
start = time.time()
print("Thời gian trôi qua khi làm việc...")
time.sleep(0.9)
end = time.time()
print("Thời gian tiêu thụ trong làm việc: ", end - start)

Kết quả

Thời gian trôi qua khi làm việc...
Thời gian tiêu thụ trong làm việc: 0.9219651222229004

2. Hàm time.clock()

Hàm time.clock() trả về thời gian xử lý (processor time). Nó được dùng cho kiểm tra hiệu suất/benchmarking.

Cú pháp

time.clock()

Hàm clock() trả về thời gian chính xác mà chương trình mất và nó chính xác hơn so với đối ứng của nó.

Hãy viết chương trình dùng hai hàm time (thảo luận trên) để phân biệt:

import time
template = 'time()# {:0.2f}, clock()# {:0.2f}'
print(template.format(time.time(), time.clock()))
for i in range(5, 0, -1):
    print('---Sleeping for: ', i, 'sec.')
    time.sleep(i)
print(template.format(time.time(), time.clock()) )

Kết quả

time()# 1553263728.08, clock()# 0.00
---Sleeping for: 5 sec.
time()# 1553263733.14, clock()# 5.06
---Sleeping for: 4 sec.
time()# 1553263737.25, clock()# 9.17
---Sleeping for: 3 sec.
time()# 1553263740.30, clock()# 12.22
---Sleeping for: 2 sec.
time()# 1553263742.36, clock()# 14.28
---Sleeping for: 1 sec.
time()# 1553263743.42, clock()# 15.34

3. Hàm time.ctime()

Hàm time.time() nhận thời gian ở dạng "giây kể từ epoch" làm đầu vào và chuyển đổi thành chuỗi đọc được bởi con người theo giờ địa phương. Nếu không truyền đối số, nó trả về thời gian hiện tại.

import time
print('Thời gian địa phương hiện tại là:', time.ctime())
newtime = time.time() + 60
print('60 giây từ bây giờ:', time.ctime(newtime))

Kết quả

Thời gian địa phương hiện tại là: Fri Mar 22 19:43:11 2019
60 giây từ bây giờ: Fri Mar 22 19:44:11 2019

4. Hàm time.sleep()

Hàm time.sleep() dừng thực thi luồng hiện tại trong số giây xác định. Truyền giá trị floating point để có thời gian sleep chính xác hơn.

Hàm sleep() có thể dùng trong tình huống cần chờ tệp kết thúc đóng hoặc để database commit xảy ra.

import time
# dùng ctime() hiển thị thời điểm hiện tại
print("Thời gian bắt đầu từ: ", end="")
print(time.ctime())
# dùng sleep() tạm dừng thực thi
print('Đợi 5 giây.')
time.sleep(5)
# dùng ctime() hiển thị thời điểm hiện tại
print("Thời gian kết thúc tại: ", end="")
print(time.ctime())

Kết quả

Thời gian bắt đầu từ: Fri Mar 22 20:00:00 2019
Đợi 5 giây.
Thời gian kết thúc tại: Fri Mar 22 20:00:05 2019

5. Lớp time.struct_time

time.struct_time là cấu trúc dữ liệu duy nhất có trong module time. Nó có interface named tuple và có thể truy cập qua chỉ số hoặc tên thuộc tính.

Cú pháp

time.struct_time

Lớp này hữu ích khi bạn cần truy cập trường cụ thể của một ngày.

Lớp này cung cấp các hàm như localtime(), gmtime() và trả về đối tượng struct_time.

import time
print('Thời gian địa phương hiện tại:', time.ctime())
t = time.localtime()
print('Ngày của tháng:', t.tm_mday)
print('Ngày của tuần:', t.tm_wday)
print('Ngày của năm:', t.tm_yday)

Kết quả

Thời gian địa phương hiện tại: Fri Mar 22 20:10:25 2019
Ngày của tháng: 22
Ngày của tuần: 4
Ngày của năm: 81

6. Hàm time.strftime()

Hàm này nhận một tuple hoặc struct_time ở đối số thứ hai và chuyển đổi thành chuỗi theo định dạng xác định ở đối số thứ nhất.

Cú pháp

time.strftime()

Dưới đây là chương trình triển khai hàm time.strftime():

import time
now = time.localtime(time.time())
print("Thời gian ngày hiện tại là: ", time.asctime(now))
print(time.strftime("%y/%m/%d %H:%M", now))
print(time.strftime("%a %b %d", now))
print(time.strftime("%c", now))
print(time.strftime("%I %p", now))
print(time.strftime("%Y-%m-%d %H:%M:%S %Z", now))

Kết quả

Thời gian ngày hiện tại là: Fri Mar 22 20:13:43 2019
19/03/22 20:13
Fri Mar 22
Fri Mar 22 20:13:43 2019
08 PM
2019-03-22 20:13:43 India Standard Time

Kiểm tra múi giờ trong Python

Có hai thuộc tính thời gian cho thông tin múi giờ:

1. time.timezone

Trả về độ lệch của múi giờ địa phương (non-DST) theo định dạng UTC.

>>> time.timezone
-19800

2. time.tzname – Trả về tuple chứa múi giờ địa phương non-DST và DST.

>>> time.tzname
('India Standard Time', 'India Daylight Time')