time --- Truy cập và chuyển đổi thời gian¶
Mô-đun này cung cấp nhiều chức năng liên quan đến thời gian. Để biết chức năng liên quan, hãy xem thêm mô-đun datetime và calendar.
Mặc dù mô-đun này luôn có sẵn nhưng không phải tất cả các chức năng đều có sẵn trên tất cả các nền tảng. Hầu hết các hàm được định nghĩa trong mô-đun này đều gọi các hàm thư viện nền tảng C có cùng tên. Đôi khi có thể hữu ích khi tham khảo tài liệu nền tảng vì ngữ nghĩa của các chức năng này khác nhau giữa các nền tảng.
Cần giải thích một số thuật ngữ và quy ước.
epoch là điểm bắt đầu thời gian, giá trị trả về của
time.gmtime(0). Đó là ngày 1 tháng 1 năm 1970, 00:00:00 (UTC) trên tất cả các nền tảng.
Thuật ngữ seconds since the epoch đề cập đến tổng số giây đã trôi qua kể từ kỷ nguyên, thường không bao gồm leap seconds. Giây nhuận được loại trừ khỏi tổng số này trên tất cả các nền tảng tuân thủ POSIX.
Các hàm trong mô-đun này có thể không xử lý ngày và giờ trước epoch hoặc xa hơn trong tương lai. Điểm giới hạn trong tương lai được xác định bởi thư viện C; đối với hệ thống 32 bit, thông thường là vào năm 2038.
Hàm
strptime()có thể phân tích các năm có 2 chữ số khi được cung cấp mã định dạng%y. Khi các năm có 2 chữ số được phân tích cú pháp, chúng được chuyển đổi theo tiêu chuẩn POSIX và ISO C: giá trị 69--99 được ánh xạ tới 1969--1999 và giá trị 0--68 được ánh xạ tới 2000--2068.
UTC là Coordinated Universal Time và được thay thế Greenwich Mean Time hoặc GMT làm cơ sở của giờ hiện hành quốc tế. Từ viết tắt UTC không phải là một sai lầm mà phù hợp với sơ đồ đặt tên bất khả tri về ngôn ngữ trước đó cho các tiêu chuẩn thời gian như UT0, UT1 và UT2.
DST là Giờ tiết kiệm ánh sáng ban ngày, việc điều chỉnh múi giờ (thường) một giờ trong một phần của năm. Các quy tắc của DST rất kỳ diệu (được xác định bởi luật pháp địa phương) và có thể thay đổi theo từng năm. Thư viện C có một bảng chứa các quy tắc cục bộ (thường được đọc từ tệp hệ thống để linh hoạt) và là nguồn duy nhất của Trí tuệ đích thực về mặt này.
Độ chính xác của các hàm thời gian thực khác nhau có thể thấp hơn mức được đề xuất bởi các đơn vị trong đó giá trị hoặc đối số của chúng được biểu thị. Ví dụ. trên hầu hết các hệ thống Unix, đồng hồ chỉ "tích tắc" 50 hoặc 100 lần một giây.
Mặt khác, độ chính xác của
time()vàsleep()tốt hơn so với các phiên bản Unix tương đương: thời gian được biểu thị dưới dạng số dấu phẩy động,time()trả về thời gian chính xác nhất hiện có (sử dụng Unixgettimeofday()nếu có) vàsleep()sẽ chấp nhận thời gian có phân số khác 0 (Unixselect()được sử dụng để triển khai điều này, nếu có).Giá trị thời gian được trả về bởi
gmtime(),localtime()vàstrptime()và được chấp nhận bởiasctime(),mktime()vàstrftime(), là một chuỗi gồm 9 số nguyên. Giá trị trả về củagmtime(),localtime()vàstrptime()cũng cung cấp tên thuộc tính cho từng trường riêng lẻ.Xem
struct_timeđể biết mô tả về các đối tượng này.Thay đổi trong phiên bản 3.3: Loại
struct_timeđược mở rộng để cung cấp các thuộc tínhtm_gmtoffvàtm_zonekhi nền tảng hỗ trợ các thành viênstruct tmtương ứng.Thay đổi trong phiên bản 3.6: Các thuộc tính
struct_timetm_gmtoffvàtm_zonehiện có sẵn trên tất cả các nền tảng.Sử dụng các hàm sau để chuyển đổi giữa các biểu diễn thời gian:
Từ
Đến
sử dụng
giây kể từ kỷ nguyên
struct_timetrong UTCgiây kể từ kỷ nguyên
struct_timetheo giờ địa phươngstruct_timetrong UTCgiây kể từ kỷ nguyên
struct_timetheo giờ địa phươnggiây kể từ kỷ nguyên
Chức năng¶
- time.asctime([t])¶
Chuyển đổi một bộ hoặc
struct_timebiểu thị thời gian được trả về bởigmtime()hoặclocaltime()thành một chuỗi có dạng sau:'Sun Jun 20 23:21:05 1993'. Trường ngày dài hai ký tự và được đệm khoảng trắng nếu ngày là một chữ số, ví dụ:'Wed Jun 9 04:26:40 1993'.Nếu t không được cung cấp, thời gian hiện tại do
localtime()trả về sẽ được sử dụng. Thông tin ngôn ngữ không đượcasctime()sử dụng.Ghi chú
Không giống như hàm C cùng tên,
asctime()không thêm dòng mới ở cuối.
- time.pthread_getcpuclockid(thread_id)¶
Trả về clk_id của đồng hồ thời gian CPU dành riêng cho luồng cho thread_id được chỉ định.
Sử dụng thuộc tính
threading.get_ident()hoặcidentcủa đối tượngthreading.Threadđể nhận giá trị phù hợp cho thread_id.Cảnh báo
Việc chuyển thread_id không hợp lệ hoặc đã hết hạn có thể dẫn đến hành vi không xác định, chẳng hạn như lỗi phân đoạn.
sẵn có: Unix
Xem trang hướng dẫn sử dụng pthread_getcpuclockid(3) để biết thêm thông tin.
Added in version 3.7.
- time.clock_getres(clk_id)¶
Trả về độ phân giải (độ chính xác) của đồng hồ được chỉ định clk_id. Tham khảo Hằng số ID đồng hồ để biết danh sách các giá trị được chấp nhận cho clk_id.
sẵn có: Unix.
Added in version 3.3.
- time.clock_gettime(clk_id) float¶
Trả về thời gian của đồng hồ đã chỉ định clk_id. Tham khảo Hằng số ID đồng hồ để biết danh sách các giá trị được chấp nhận cho clk_id.
Sử dụng
clock_gettime_ns()để tránh mất độ chính xác do loạifloatgây ra.sẵn có: Unix.
Added in version 3.3.
- time.clock_gettime_ns(clk_id) int¶
Tương tự như
clock_gettime()nhưng thời gian trả về là nano giây.sẵn có: Unix.
Added in version 3.7.
- time.clock_settime(clk_id, time: float)¶
Đặt thời gian của đồng hồ được chỉ định clk_id. Hiện tại,
CLOCK_REALTIMElà giá trị duy nhất được chấp nhận cho clk_id.Sử dụng
clock_settime_ns()để tránh mất độ chính xác do loạifloatgây ra.sẵn có: Unix, not Android, not iOS.
Added in version 3.3.
- time.clock_settime_ns(clk_id, time: int)¶
Tương tự như
clock_settime()nhưng đặt thời gian bằng nano giây.sẵn có: Unix, not Android, not iOS.
Added in version 3.7.
- time.ctime([secs])¶
Chuyển đổi thời gian được biểu thị bằng giây kể từ epoch thành một chuỗi có dạng:
'Sun Jun 20 23:21:05 1993'biểu thị giờ địa phương. Trường ngày dài hai ký tự và được đệm khoảng trắng nếu ngày là một chữ số, ví dụ:'Wed Jun 9 04:26:40 1993'.Nếu secs không được cung cấp hoặc
None, thời gian hiện tại dotime()trả về sẽ được sử dụng.ctime(secs)tương đương vớiasctime(localtime(secs)). Thông tin ngôn ngữ không đượcctime()sử dụng.
- time.get_clock_info(name)¶
Nhận thông tin về đồng hồ được chỉ định dưới dạng đối tượng không gian tên. Tên đồng hồ được hỗ trợ và các chức năng tương ứng để đọc giá trị của chúng là:
'monotonic':time.monotonic()'perf_counter':time.perf_counter()'process_time':time.process_time()'thread_time':time.thread_time()'time':time.time()
Kết quả có các thuộc tính sau:
adjustable:
Truenếu đồng hồ có thể được đặt để nhảy tiến hoặc lùi theo thời gian, nếu không thìFalse. Không đề cập đến việc điều chỉnh tốc độ NTP dần dần.implementation: Tên của hàm C cơ bản được sử dụng để lấy giá trị đồng hồ. Tham khảo Hằng số ID đồng hồ để biết các giá trị có thể.
monotonic:
Truenếu đồng hồ không thể quay ngược,Falsenếu khôngresolution: Độ phân giải của đồng hồ tính bằng giây (
float)
Added in version 3.3.
- time.gmtime([secs])¶
Chuyển đổi thời gian được biểu thị bằng giây kể từ epoch thành
struct_timetrong UTC trong đó cờ dst luôn bằng 0. Nếu secs không được cung cấp hoặcNone, thời gian hiện tại dotime()trả về sẽ được sử dụng. Phân số của một giây được bỏ qua. Xem phần mô tả ở trên về đối tượngstruct_time. Xemcalendar.timegm()để biết nghịch đảo của hàm này.
- time.localtime([secs])¶
Giống như
gmtime()nhưng chuyển đổi sang giờ địa phương. Nếu secs không được cung cấp hoặcNone, thời gian hiện tại dotime()trả về sẽ được sử dụng. Cờ dst được đặt thành1khi DST áp dụng cho thời gian nhất định.localtime()có thể tăngOverflowErrornếu dấu thời gian nằm ngoài phạm vi giá trị được hỗ trợ bởi các hàmlocaltime()hoặcgmtime()của nền tảng C vàOSErrortrênlocaltime()hoặcgmtime()bị lỗi. Thông thường điều này sẽ bị giới hạn trong những năm từ 1970 đến 2038.
- time.mktime(t)¶
Đây là hàm nghịch đảo của
localtime(). Đối số của nó làstruct_timehoặc 9-tuple đầy đủ (vì cần có cờ dst; sử dụng-1làm cờ dst nếu không xác định) biểu thị thời gian theo thời gian local, không phải UTC. Nó trả về một số dấu phẩy động để tương thích vớitime(). Nếu giá trị đầu vào không thể được biểu thị dưới dạng thời gian hợp lệ thìOverflowErrorhoặcValueErrorsẽ được tăng lên (điều này tùy thuộc vào việc giá trị không hợp lệ có bị Python hay thư viện C cơ bản bắt được hay không). Ngày sớm nhất mà nó có thể tạo thời gian phụ thuộc vào nền tảng.
- time.monotonic() float¶
Trả về giá trị (tính bằng phân số giây) của đồng hồ đơn điệu, tức là đồng hồ không thể quay ngược. Đồng hồ không bị ảnh hưởng bởi các bản cập nhật đồng hồ hệ thống. Điểm tham chiếu của giá trị trả về không được xác định, do đó chỉ có sự khác biệt giữa kết quả của hai cuộc gọi là hợp lệ.
Đồng hồ:
Trên Windows, gọi
QueryPerformanceCounter()vàQueryPerformanceFrequency().Trên macOS, gọi
mach_absolute_time()vàmach_timebase_info().Trên HP-UX, gọi
gethrtime().Gọi
clock_gettime(CLOCK_HIGHRES)nếu có.Nếu không, hãy gọi
clock_gettime(CLOCK_MONOTONIC).
Sử dụng
monotonic_ns()để tránh mất độ chính xác do loạifloatgây ra.Added in version 3.3.
Thay đổi trong phiên bản 3.5: Chức năng này hiện luôn khả dụng và đồng hồ hiện tại giống nhau cho tất cả các quy trình.
Thay đổi trong phiên bản 3.10: Trên macOS, đồng hồ hiện giống nhau cho tất cả các quy trình.
- time.monotonic_ns() int¶
Tương tự như
monotonic(), nhưng thời gian trả về tính bằng nano giây.Added in version 3.7.
- time.perf_counter() float¶
Trả về giá trị (tính bằng phân số giây) của bộ đếm hiệu suất, tức là đồng hồ có độ phân giải cao nhất hiện có để đo khoảng thời gian ngắn. Nó bao gồm thời gian trôi qua trong khi ngủ. Đồng hồ là như nhau cho tất cả các quá trình. Điểm tham chiếu của giá trị trả về không được xác định, do đó chỉ có sự khác biệt giữa kết quả của hai cuộc gọi là hợp lệ.
Trên CPython, sử dụng đồng hồ giống như
time.monotonic()và là đồng hồ đơn điệu, tức là đồng hồ không thể quay ngược.Sử dụng
perf_counter_ns()để tránh mất độ chính xác do loạifloatgây ra.Added in version 3.3.
Thay đổi trong phiên bản 3.10: Trên Windows, đồng hồ bây giờ giống nhau cho tất cả các tiến trình.
Thay đổi trong phiên bản 3.13: Sử dụng đồng hồ giống như
time.monotonic().
- time.perf_counter_ns() int¶
Tương tự như
perf_counter(), nhưng thời gian trả về tính bằng nano giây.Added in version 3.7.
- time.process_time() float¶
Trả về giá trị (tính bằng phân số giây) của tổng thời gian CPU của hệ thống và người dùng của quy trình hiện tại. Nó không bao gồm thời gian trôi qua trong khi ngủ. Theo định nghĩa, nó bao trùm toàn bộ quá trình. Điểm tham chiếu của giá trị trả về không được xác định, do đó chỉ có sự khác biệt giữa kết quả của hai cuộc gọi là hợp lệ.
Sử dụng
process_time_ns()để tránh mất độ chính xác do loạifloatgây ra.Added in version 3.3.
- time.process_time_ns() int¶
Tương tự như
process_time()nhưng thời gian trả về là nano giây.Added in version 3.7.
- time.sleep(secs)¶
Tạm dừng thực thi luồng đang gọi trong số giây đã cho. Đối số có thể là số dấu phẩy động để biểu thị thời gian ngủ chính xác hơn.
Nếu chế độ ngủ bị gián đoạn bởi tín hiệu và không có ngoại lệ nào được xử lý bởi bộ xử lý tín hiệu thì chế độ ngủ sẽ được khởi động lại với thời gian chờ được tính toán lại.
Thời gian tạm dừng có thể dài hơn yêu cầu tùy ý do việc lập kế hoạch cho hoạt động khác trong hệ thống.
Triển khai Windows
Trên Windows, nếu secs bằng 0, luồng sẽ chuyển phần thời gian còn lại của nó sang bất kỳ luồng nào khác đã sẵn sàng chạy. Nếu không có luồng nào khác sẵn sàng chạy, hàm sẽ trả về ngay lập tức và luồng tiếp tục thực thi. Trên Windows 10 trở lên, việc triển khai sử dụng high-resolution timer cung cấp độ phân giải 100 nano giây. Nếu secs bằng 0 thì
Sleep(0)sẽ được sử dụng.Triển khai Unix
Sử dụng
clock_nanosleep()nếu có (độ phân giải: 1 nano giây);Hoặc sử dụng
nanosleep()nếu có (độ phân giải: 1 nano giây);Hoặc sử dụng
select()(độ phân giải: 1 micro giây).
Ghi chú
Để mô phỏng tình trạng "không hoạt động", hãy sử dụng
passthay vìtime.sleep(0).Để tự nguyện từ bỏ CPU, hãy chỉ định scheduling policy thời gian thực và thay vào đó sử dụng
os.sched_yield().Tăng một auditing event
time.sleepvới đối sốsecs.Thay đổi trong phiên bản 3.5: Hàm hiện ở chế độ ngủ ít nhất secs ngay cả khi chế độ ngủ bị gián đoạn bởi tín hiệu, ngoại trừ nếu trình xử lý tín hiệu đưa ra một ngoại lệ (xem PEP 475 để biết lý do).
Thay đổi trong phiên bản 3.11: Trên Unix, các hàm
clock_nanosleep()vànanosleep()hiện được sử dụng nếu có. Trên Windows, bộ hẹn giờ có thể chờ hiện được sử dụng.Thay đổi trong phiên bản 3.13: Phát sinh một sự kiện kiểm tra.
- time.strftime(format[, t])¶
Chuyển đổi một bộ hoặc
struct_timebiểu thị thời gian được trả về bởigmtime()hoặclocaltime()thành một chuỗi được chỉ định bởi đối số format. Nếu t không được cung cấp, thời gian hiện tại dolocaltime()trả về sẽ được sử dụng. format phải là một chuỗi.ValueErrorđược nâng lên nếu bất kỳ trường nào trong t nằm ngoài phạm vi cho phép.0 là đối số pháp lý cho bất kỳ vị trí nào trong bộ thời gian; nếu nó thường là bất hợp pháp thì giá trị buộc phải đúng.
Các lệnh sau có thể được nhúng vào chuỗi format. Chúng được hiển thị mà không có thông số kỹ thuật về độ rộng và độ chính xác của trường tùy chọn và được thay thế bằng các ký tự được chỉ định trong kết quả
strftime():chỉ thị
Ý nghĩa
Ghi chú
%aTên ngày trong tuần viết tắt của Locale.
%ATên ngày trong tuần đầy đủ của miền địa phương.
%bTên tháng viết tắt của Locale.
%BTên tháng đầy đủ của miền địa phương.
%cTrình bày ngày và giờ thích hợp của miền địa phương.
%dNgày trong tháng ở dạng số thập phân [01,31].
%f- Micro giây dưới dạng số thập phân
[000000,999999].
(1)
%HGiờ (đồng hồ 24 giờ) dưới dạng số thập phân [00,23].
%IGiờ (đồng hồ 12 giờ) dưới dạng số thập phân [01,12].
%jNgày trong năm ở dạng số thập phân [001,366].
%mTháng dưới dạng số thập phân [01,12].
%MPhút dưới dạng số thập phân [00,59].
%pNgôn ngữ tương đương với AM hoặc PM.
(2)
%SThứ hai dưới dạng số thập phân [00,61].
(3)
%USố tuần trong năm (Chủ nhật là ngày đầu tiên trong tuần) dưới dạng số thập phân [00,53]. Tất cả các ngày trong năm mới trước Chủ nhật đầu tiên được coi là ở tuần 0.
(4)
%uNgày trong tuần (Thứ Hai là 1; Chủ Nhật là 7) dưới dạng số thập phân [1, 7].
%wNgày trong tuần dưới dạng số thập phân [0(Chủ nhật),6].
%WSố tuần trong năm (Thứ Hai là ngày đầu tiên trong tuần) dưới dạng số thập phân [00,53]. Tất cả các ngày trong năm mới trước Thứ Hai đầu tiên được coi là ở tuần 0.
(4)
%xĐại diện ngày thích hợp của miền địa phương.
%XĐại diện thời gian thích hợp của miền địa phương.
%yNăm không có thế kỷ là số thập phân [00,99].
%YNăm với thế kỷ là số thập phân.
%zĐộ lệch múi giờ biểu thị chênh lệch thời gian dương hoặc âm so với UTC/GMT có dạng +HHMM hoặc -HHMM, trong đó H biểu thị chữ số giờ thập phân và M biểu thị chữ số phút thập phân [-23:59, +23:59]. [1]
%ZTên múi giờ (không có ký tự nếu không tồn tại múi giờ). Không dùng nữa. [1]
%GISO 8601 năm (tương tự như
%Ynhưng tuân theo quy tắc cho năm dương lịch ISO 8601). Năm bắt đầu từ tuần có ngày Thứ Năm đầu tiên của năm dương lịch.%VISO 8601 số tuần (dưới dạng số thập phân [01,53]). Tuần đầu tiên của năm là tuần có Thứ Năm đầu tiên trong năm. Tuần bắt đầu vào thứ Hai.
%%Một ký tự
'%'theo nghĩa đen.Ghi chú:
Chỉ thị định dạng
%fchỉ áp dụng chostrptime(), không áp dụng chostrftime(). Tuy nhiên, hãy xem thêmdatetime.datetime.strptime()vàdatetime.datetime.strftime()trong đó chỉ thị định dạng%fapplies to microseconds.Khi được sử dụng với hàm
strptime(), lệnh%pchỉ ảnh hưởng đến trường giờ đầu ra nếu lệnh%Iđược sử dụng để phân tích giờ.
Phạm vi thực sự là
0đến61; giá trị60hợp lệ trong dấu thời gian đại diện cho leap seconds và giá trị61được hỗ trợ vì lý do lịch sử.Khi được sử dụng với hàm
strptime(),%Uvà%Wchỉ được sử dụng trong các phép tính khi chỉ định ngày trong tuần và năm.
Đây là một ví dụ, một định dạng cho ngày tương thích với định dạng được chỉ định trong tiêu chuẩn email Internet RFC 5322. [1]
>>> từ thời gian nhập gmtime, strftime >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) 'Thứ năm, ngày 28 tháng 6 năm 2001 14:17:15 +0000'
Các lệnh bổ sung có thể được hỗ trợ trên một số nền tảng nhất định, nhưng chỉ những lệnh được liệt kê ở đây mới có ý nghĩa được chuẩn hóa bởi ANSI C. Để xem bộ mã định dạng đầy đủ được hỗ trợ trên nền tảng của bạn, hãy tham khảo tài liệu strftime(3).
Trên một số nền tảng, thông số kỹ thuật về độ rộng và độ chính xác của trường tùy chọn có thể ngay lập tức tuân theo
'%'ban đầu của lệnh theo thứ tự sau; cái này cũng không di động được. Độ rộng trường thường là 2 ngoại trừ%jlà 3.
- time.strptime(string[, format])¶
Phân tích một chuỗi biểu thị thời gian theo một định dạng. Giá trị trả về là
struct_timeđược trả về bởigmtime()hoặclocaltime().Tham số format sử dụng các lệnh tương tự như các lệnh được sử dụng bởi
strftime(); nó mặc định là"%a %b %d %H:%M:%S %Y"khớp với định dạng được trả về bởictime(). Nếu string không thể được phân tích cú pháp theo format hoặc nếu nó có dữ liệu dư thừa sau khi phân tích cú pháp,ValueErrorsẽ được nâng lên. Các giá trị mặc định được sử dụng để điền vào bất kỳ dữ liệu còn thiếu nào khi không thể suy ra các giá trị chính xác hơn là(1900, 1, 1, 0, 0, 0, 0, 1, -1). Cả string và format đều phải là chuỗi.Ví dụ:
>>> import time >>> time.strptime("30 Nov 00", "%d %b %y") time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
Hỗ trợ cho lệnh
%Zdựa trên các giá trị có trongtznamevà liệudaylightcó đúng hay không. Do đó, nó dành riêng cho nền tảng ngoại trừ việc nhận dạng UTC và GMT luôn được biết đến (và được coi là múi giờ tiết kiệm ánh sáng ban ngày).Chỉ các chỉ thị được chỉ định trong tài liệu mới được hỗ trợ. Vì
strftime()được triển khai trên mỗi nền tảng nên đôi khi nó có thể đưa ra nhiều lệnh hơn những lệnh được liệt kê. Nhưngstrptime()độc lập với bất kỳ nền tảng nào và do đó không nhất thiết phải hỗ trợ tất cả các lệnh có sẵn mà không được ghi lại là được hỗ trợ.
- class time.struct_time¶
Loại chuỗi giá trị thời gian được trả về bởi
gmtime(),localtime()vàstrptime(). Nó là một đối tượng có giao diện named tuple: các giá trị có thể được truy cập theo chỉ mục và theo tên thuộc tính. Các giá trị sau đây tồn tại:chỉ mục
Thuộc tính
Giá trị
0
- tm_year¶
(ví dụ, 1993)
1
- tm_mon¶
phạm vi [1, 12]
2
- tm_mday¶
phạm vi [1, 31]
3
- tm_hour¶
phạm vi [0, 23]
4
- tm_min¶
phạm vi [0, 59]
5
- tm_sec¶
phạm vi [0, 61]; xem Note (2) trong
strftime()6
- tm_wday¶
phạm vi [0, 6]; Thứ Hai là 0
7
- tm_yday¶
phạm vi [1, 366]
8
- tm_isdst¶
0, 1 hoặc -1; xem bên dưới
không áp dụng
- tm_zone¶
viết tắt của tên múi giờ
không áp dụng
- tm_gmtoff¶
bù đắp về phía đông của UTC trong vài giây
Lưu ý rằng không giống như cấu trúc C, giá trị tháng nằm trong phạm vi [1, 12], không phải [0, 11].
Trong các cuộc gọi đến
mktime(),tm_isdstcó thể được đặt thành 1 khi thời gian tiết kiệm ánh sáng ban ngày có hiệu lực và 0 khi không áp dụng. Giá trị -1 cho biết rằng điều này chưa được biết và thường sẽ dẫn đến trạng thái chính xác được điền vào.Khi một bộ dữ liệu có độ dài không chính xác được chuyển đến một hàm mong đợi
struct_timehoặc có các phần tử sai loại,TypeErrorsẽ được nâng lên.
- time.time() float¶
Trả về thời gian tính bằng giây kể từ epoch dưới dạng số dấu phẩy động. Việc xử lý leap seconds phụ thuộc vào nền tảng. Trên Windows và hầu hết các hệ thống Unix, số giây nhuận không được tính vào thời gian tính bằng giây kể từ epoch. Điều này thường được gọi là Unix time.
Lưu ý rằng mặc dù thời gian luôn được trả về dưới dạng số dấu phẩy động nhưng không phải tất cả các hệ thống đều cung cấp thời gian với độ chính xác cao hơn 1 giây. Mặc dù hàm này thường trả về các giá trị không giảm nhưng nó có thể trả về giá trị thấp hơn cuộc gọi trước nếu đồng hồ hệ thống được đặt lại giữa hai cuộc gọi.
Số được
time()trả về có thể được chuyển đổi thành định dạng thời gian phổ biến hơn (tức là năm, tháng, ngày, giờ, v.v.) trong UTC bằng cách chuyển nó sang hàmgmtime()hoặc theo giờ địa phương bằng cách chuyển nó sang hàmlocaltime(). Trong cả hai trường hợp, một đối tượngstruct_timeđược trả về, từ đó các thành phần của ngày theo lịch có thể được truy cập dưới dạng thuộc tính.Đồng hồ:
Trên Windows, hãy gọi
GetSystemTimePreciseAsFileTime().Gọi
clock_gettime(CLOCK_REALTIME)nếu có.Nếu không, hãy gọi
gettimeofday().
Sử dụng
time_ns()để tránh mất độ chính xác do loạifloatgây ra.
Thay đổi trong phiên bản 3.13: Trên Windows, gọi GetSystemTimePreciseAsFileTime() thay vì GetSystemTimeAsFileTime().
- time.time_ns() int¶
Tương tự như
time()nhưng trả về thời gian dưới dạng số nguyên nano giây kể từ epoch.Added in version 3.7.
- time.thread_time() float¶
Trả về giá trị (tính bằng phân số giây) của tổng thời gian CPU của hệ thống và người dùng của luồng hiện tại. Nó không bao gồm thời gian trôi qua trong khi ngủ. Theo định nghĩa, nó là chủ đề cụ thể. Điểm tham chiếu của giá trị trả về không được xác định, do đó chỉ có sự khác biệt giữa kết quả của hai lệnh gọi trong cùng một luồng là hợp lệ.
Sử dụng
thread_time_ns()để tránh mất độ chính xác do loạifloatgây ra.sẵn có: Linux, Unix, Windows.
Hệ thống Unix hỗ trợ
CLOCK_THREAD_CPUTIME_ID.Added in version 3.7.
- time.thread_time_ns() int¶
Tương tự như
thread_time()nhưng thời gian trả về là nano giây.Added in version 3.7.
- time.tzset()¶
Đặt lại các quy tắc chuyển đổi thời gian được sử dụng bởi các thói quen của thư viện. Biến môi trường
TZchỉ định cách thực hiện việc này. Nó cũng sẽ đặt các biếntzname(từ biến môi trườngTZ),timezone(không phải DST giây phía Tây UTC),altzone(DST giây phía tây UTC) vàdaylight(thành 0 nếu múi giờ này không có bất kỳ quy tắc tiết kiệm ánh sáng ban ngày nào hoặc khác 0 nếu có thời gian, quá khứ, hiện tại hoặc tương lai khi áp dụng thời gian tiết kiệm ánh sáng ban ngày).sẵn có: Unix.
Ghi chú
Mặc dù trong nhiều trường hợp, việc thay đổi biến môi trường
TZcó thể ảnh hưởng đến đầu ra của các hàm nhưlocaltime()mà không gọitzset(), nhưng không nên dựa vào hành vi này.Biến môi trường
TZkhông được chứa khoảng trắng.Định dạng chuẩn của biến môi trường
TZlà (thêm khoảng trắng để rõ ràng):độ lệch chuẩn [dst [độ lệch [,bắt đầu[/thời gian], kết thúc[/thời gian]]]]
Nơi có các thành phần:
stdvàdstBa hoặc nhiều chữ và số cho chữ viết tắt múi giờ. Chúng sẽ được truyền bá vào time.tzname
offsetPhần bù có dạng:
± hh[:mm[:ss]]. Điều này cho biết giá trị gia tăng theo giờ địa phương để đạt đến UTC. Nếu trước dấu '-', múi giờ nằm ở phía đông của Kinh tuyến gốc; nếu không thì nó ở phía tây. Nếu không có offset sau dst, thời gian mùa hè được coi là sớm hơn một giờ so với thời gian tiêu chuẩn.start[/time], end[/time]Cho biết thời điểm thay đổi sang và quay lại từ DST. Định dạng của ngày bắt đầu và ngày kết thúc là một trong những định dạng sau:
JnNgày Julian n (1 <= n <= 365). Ngày nhuận không được tính nên trong mọi năm ngày 28 tháng 2 là ngày 59 và ngày 1 tháng 3 là ngày 60.
nNgày Julian dựa trên số 0 (0 <= n <= 365). Ngày nhuận được tính và có thể tham khảo ngày 29/2.
Mm.n.dNgày thứ d (0 <= d <= 6) của tuần n của tháng m trong năm (1 <= n <= 5, 1 <= m <= 12, trong đó tuần 5 có nghĩa là "ngày d cuối cùng trong tháng m" có thể xảy ra vào tuần thứ tư hoặc tuần thứ năm). Tuần 1 là tuần đầu tiên xảy ra ngày thứ d. Ngày số 0 là ngày chủ nhật.
timecó cùng định dạng vớioffsetngoại trừ việc không cho phép dấu đầu dòng ('-' hoặc '+'). Mặc định, nếu không có thời gian, là 02:00:00.
>>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0' >>> time.tzset() >>> time.strftime('%X %x %Z') '02:07:36 05/08/03 EDT' >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0' >>> time.tzset() >>> time.strftime('%X %x %Z') '16:08:12 05/08/03 AEST'
Trên nhiều hệ thống Unix (bao gồm *BSD, Linux, Solaris và Darwin), sẽ thuận tiện hơn khi sử dụng cơ sở dữ liệu Zoneinfo (tzfile(5)) của hệ thống để chỉ định các quy tắc múi giờ. Để thực hiện việc này, hãy đặt biến môi trường
TZtheo đường dẫn của tệp dữ liệu múi giờ được yêu cầu, liên quan đến thư mục gốc của cơ sở dữ liệu múi giờ 'zoneinfo' của hệ thống, thường nằm ở/usr/share/zoneinfo. Ví dụ:'US/Eastern','Australia/Melbourne','Egypt'hoặc'Europe/Amsterdam'.>>> os.environ['TZ'] = 'Mỹ/Miền Đông' >>> time.tzset() >>> time.tzname ('EST', 'EDT') >>> os.environ['TZ'] = 'Ai Cập' >>> time.tzset() >>> time.tzname ('EET', 'EEST')
Hằng số ID đồng hồ¶
Các hằng số này được sử dụng làm tham số cho clock_getres() và clock_gettime().
- time.CLOCK_BOOTTIME¶
Giống hệt
CLOCK_MONOTONIC, ngoại trừ nó cũng bao gồm bất kỳ thời điểm nào hệ thống bị treo.Điều này cho phép các ứng dụng có được đồng hồ đơn điệu nhận biết tạm dừng mà không phải đối mặt với các vấn đề phức tạp của
CLOCK_REALTIME, có thể bị gián đoạn nếu thời gian được thay đổi bằngsettimeofday()hoặc tương tự.sẵn có: Linux >= 2.6.39.
Added in version 3.7.
- time.CLOCK_HIGHRES¶
Hệ điều hành Solaris có bộ hẹn giờ
CLOCK_HIGHREScố gắng sử dụng nguồn phần cứng tối ưu và có thể cho độ phân giải gần nano giây.CLOCK_HIGHRESlà đồng hồ có độ phân giải cao, không thể điều chỉnh.sẵn có: Solaris.
Added in version 3.3.
- time.CLOCK_MONOTONIC¶
Đồng hồ không thể cài đặt được và thể hiện thời gian đơn điệu kể từ một điểm bắt đầu không xác định nào đó.
sẵn có: Unix.
Added in version 3.3.
- time.CLOCK_MONOTONIC_RAW¶
Tương tự như
CLOCK_MONOTONIC, nhưng cung cấp quyền truy cập vào thời gian thô dựa trên phần cứng không chịu sự điều chỉnh của NTP.sẵn có: Linux >= 2.6.28, macOS >= 10.12.
Added in version 3.3.
- time.CLOCK_MONOTONIC_RAW_APPROX¶
Tương tự như
CLOCK_MONOTONIC_RAW, nhưng đọc giá trị được hệ thống lưu vào bộ nhớ đệm khi chuyển ngữ cảnh và do đó có độ chính xác kém hơn.sẵn có: macOS >= 10.12.
Added in version 3.13.
- time.CLOCK_PROCESS_CPUTIME_ID¶
Bộ hẹn giờ cho mỗi quá trình có độ phân giải cao từ CPU.
sẵn có: Unix.
Added in version 3.3.
- time.CLOCK_PROF¶
Bộ hẹn giờ cho mỗi quá trình có độ phân giải cao từ CPU.
sẵn có: FreeBSD, NetBSD >= 7, OpenBSD.
Added in version 3.7.
- time.CLOCK_TAI¶
-
Hệ thống phải có bảng nhảy thứ hai hiện tại để đưa ra câu trả lời chính xác. Phần mềm PTP hoặc NTP có thể duy trì bảng thứ hai nhuận.
sẵn có: Linux.
Added in version 3.9.
- time.CLOCK_THREAD_CPUTIME_ID¶
Đồng hồ thời gian CPU dành riêng cho chủ đề.
sẵn có: Unix.
Added in version 3.3.
- time.CLOCK_UPTIME¶
Thời gian có giá trị tuyệt đối là thời gian hệ thống đã chạy và không bị tạm dừng, cung cấp phép đo thời gian hoạt động chính xác, cả tuyệt đối và khoảng thời gian.
sẵn có: FreeBSD, OpenBSD >= 5.5.
Added in version 3.7.
- time.CLOCK_UPTIME_RAW¶
Đồng hồ tăng đều đặn, theo dõi thời gian kể từ một điểm tùy ý, không bị ảnh hưởng bởi tần số hoặc điều chỉnh thời gian và không tăng trong khi hệ thống ở chế độ ngủ.
sẵn có: macOS >= 10.12.
Added in version 3.8.
- time.CLOCK_UPTIME_RAW_APPROX¶
Giống như
CLOCK_UPTIME_RAW, nhưng giá trị được hệ thống lưu vào bộ đệm tại các chuyển đổi ngữ cảnh và do đó có độ chính xác kém hơn.sẵn có: macOS >= 10.12.
Added in version 3.13.
Hằng số sau đây là tham số duy nhất có thể được gửi tới clock_settime().
Hằng số múi giờ¶
- time.altzone¶
Độ lệch của múi giờ DST cục bộ, tính bằng giây về phía tây của UTC, nếu một múi giờ được xác định. Điều này là tiêu cực nếu múi giờ DST địa phương ở phía đông UTC (như ở Tây Âu, bao gồm cả Vương quốc Anh). Chỉ sử dụng điều này nếu
daylightkhác 0. Xem ghi chú bên dưới.
- time.daylight¶
Khác không nếu múi giờ DST được xác định. Xem ghi chú bên dưới.
- time.timezone¶
Độ lệch của múi giờ địa phương (không phải DST), tính bằng giây về phía tây của UTC (âm ở hầu hết Tây Âu, dương ở Hoa Kỳ, 0 ở Vương quốc Anh). Xem ghi chú bên dưới.
- time.tzname¶
Một bộ gồm hai chuỗi: chuỗi đầu tiên là tên của múi giờ cục bộ không phải là DST, chuỗi thứ hai là tên của múi giờ DST cục bộ. Nếu không xác định múi giờ DST thì không nên sử dụng chuỗi thứ hai. Xem ghi chú bên dưới.
Ghi chú
Đối với các hằng số Múi giờ ở trên (altzone, daylight, timezone và tzname), giá trị được xác định bởi các quy tắc múi giờ có hiệu lực tại thời điểm tải mô-đun hoặc lần cuối cùng tzset() được gọi và có thể không chính xác đối với các thời điểm trong quá khứ. Bạn nên sử dụng kết quả tm_gmtoff và tm_zone từ localtime() để lấy thông tin múi giờ.
Xem thêm
- Mô-đun
datetime Giao diện hướng đối tượng hơn về ngày và giờ.
- Mô-đun
locale Dịch vụ quốc tế hóa. Cài đặt ngôn ngữ ảnh hưởng đến việc diễn giải nhiều công cụ xác định định dạng trong
strftime()vàstrptime().- Mô-đun
calendar Các chức năng chung liên quan đến lịch.
timegm()là nghịch đảo củagmtime()từ mô-đun này.
Chú thích cuối trang