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 datetimecalendar.

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()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 Unix gettimeofday() nếu có) và sleep() sẽ chấp nhận thời gian có phân số khác 0 (Unix select() đượ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()strptime() và được chấp nhận bởi asctime(), mktime()strftime(), là một chuỗi gồm 9 số nguyên. Giá trị trả về của gmtime(), localtime()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ính tm_gmtofftm_zone khi nền tảng hỗ trợ các thành viên struct tm tương ứng.

    Thay đổi trong phiên bản 3.6: Các thuộc tính struct_time tm_gmtofftm_zone hiệ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_time trong UTC

    gmtime()

    giây kể từ kỷ nguyên

    struct_time theo giờ địa phương

    localtime()

    struct_time trong UTC

    giây kể từ kỷ nguyên

    calendar.timegm()

    struct_time theo giờ địa phương

    giây kể từ kỷ nguyên

    mktime()

Chức năng

time.asctime([t])

Chuyển đổi một bộ hoặc struct_time biểu thị thời gian được trả về bởi gmtime() hoặc localtime() 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 được asctime() 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ặc ident của đối tượng threading.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ại float gâ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_REALTIME là 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ại float gâ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 do time() trả về sẽ được sử dụng. ctime(secs) tương đương với asctime(localtime(secs)). Thông tin ngôn ngữ không được ctime() 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à:

Kết quả có các thuộc tính sau:

  • adjustable: True nế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: True nếu đồng hồ không thể quay ngược, False nếu không

  • resolution: Độ 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_time trong UTC trong đó cờ dst luôn bằng 0. Nếu secs không được cung cấp hoặc None, thời gian hiện tại do time() 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ượng struct_time. Xem calendar.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ặc None, thời gian hiện tại do time() trả về sẽ được sử dụng. Cờ dst được đặt thành 1 khi DST áp dụng cho thời gian nhất định.

localtime() có thể tăng OverflowError nếu dấu thời gian nằm ngoài phạm vi giá trị được hỗ trợ bởi các hàm localtime() hoặc gmtime() của nền tảng C và OSError trên localtime() hoặc gmtime() 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_time hoặc 9-tuple đầy đủ (vì cần có cờ dst; sử dụng -1 là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ới time(). 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ì OverflowError hoặc ValueError sẽ đượ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()QueryPerformanceFrequency().

  • Trên macOS, gọi mach_absolute_time()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ại float gâ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ại float gâ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ại float gâ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 pass thay 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.sleep vớ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()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_time biểu thị thời gian được trả về bởi gmtime() hoặc localtime() 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 do localtime() 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ú

%a

Tên ngày trong tuần viết tắt của Locale.

%A

Tên ngày trong tuần đầy đủ của miền địa phương.

%b

Tên tháng viết tắt của Locale.

%B

Tên tháng đầy đủ của miền địa phương.

%c

Trình bày ngày và giờ thích hợp của miền địa phương.

%d

Ngà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)

%H

Giờ (đồng hồ 24 giờ) dưới dạng số thập phân [00,23].

%I

Giờ (đồng hồ 12 giờ) dưới dạng số thập phân [01,12].

%j

Ngày trong năm ở dạng số thập phân [001,366].

%m

Tháng dưới dạng số thập phân [01,12].

%M

Phút dưới dạng số thập phân [00,59].

%p

Ngôn ngữ tương đương với AM hoặc PM.

(2)

%S

Thứ hai dưới dạng số thập phân [00,61].

(3)

%U

Số 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)

%u

Ngày trong tuần (Thứ Hai là 1; Chủ Nhật là 7) dưới dạng số thập phân [1, 7].

%w

Ngày trong tuần dưới dạng số thập phân [0(Chủ nhật),6].

%W

Số 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.

%y

Năm không có thế kỷ là số thập phân [00,99].

%Y

Nă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]

%Z

Tê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]

%G

ISO 8601 năm (tương tự như %Y như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.

%V

ISO 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ú:

  1. Chỉ thị định dạng %f chỉ áp dụng cho strptime(), không áp dụng cho strftime(). Tuy nhiên, hãy xem thêm datetime.datetime.strptime()datetime.datetime.strftime() trong đó chỉ thị định dạng %f applies to microseconds.

  2. Khi được sử dụng với hàm strptime(), lệnh %p chỉ ảnh hưởng đến trường giờ đầu ra nếu lệnh %I được sử dụng để phân tích giờ.

  1. Phạm vi thực sự là 0 đến 61; giá trị 60 hợ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ử.

  2. Khi được sử dụng với hàm strptime(), %U%W chỉ đượ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ừ %j là 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ởi gmtime() hoặc localtime().

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ởi ctime(). 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, ValueError sẽ đượ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ả stringformat đề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 %Z dựa trên các giá trị có trong tzname và liệu daylight có đú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ưng strptime() độ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()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_isdst có 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_time hoặc có các phần tử sai loại, TypeError sẽ đượ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àm gmtime() hoặc theo giờ địa phương bằng cách chuyển nó sang hàm localtime(). Trong cả hai trường hợp, một đối tượng struct_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ại float gâ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ại float gâ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 TZ chỉ định cách thực hiện việc này. Nó cũng sẽ đặt các biến tzname (từ biến môi trường TZ), 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 TZ có thể ảnh hưởng đến đầu ra của các hàm như localtime() mà không gọi tzset(), nhưng không nên dựa vào hành vi này.

Biến môi trường TZ không được chứa khoảng trắng.

Định dạng chuẩn của biến môi trường TZ là (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:

stddst

Ba 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

offset

Phầ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:

Jn

Ngà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.

n

Ngà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.d

Ngà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.

time có cùng định dạng với offset ngoạ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 TZ theo đườ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()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ằng settimeofday() 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_HIGHRES cố 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_HIGHRES là đồ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

International Atomic Time

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().

time.CLOCK_REALTIME

Đồng hồ thời gian thực. Đặt đồng hồ này yêu cầu đặc quyền thích hợp. Đồng hồ là như nhau cho tất cả các quá trình.

sẵn có: Unix.

Added in version 3.3.

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 daylight khá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, timezonetzname), 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_gmtofftm_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()strptime().

Mô-đun calendar

Các chức năng chung liên quan đến lịch. timegm() là nghịch đảo của gmtime() từ mô-đun này.

Chú thích cuối trang