2013-05-15 34 views

Trả lời

5

time.time() trả về giây since epoch, do đó, nó không xác định múi giờ hoặc múi giờ nào đang được sử dụng.

Chuyển đổi tiêu chuẩn thời gian sử dụng:

Cả hai đều trả về một time.struct_time.

>>> t = time.time() 
>>> time.localtime(t) 
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=15, tm_hour=2, tm_min=41, tm_sec=49, tm_wday=2, tm_yday=135, tm_isdst=1) 
>>> time.gmtime(t) 
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=15, tm_hour=0, tm_min=41, tm_sec=49, tm_wday=2, tm_yday=135, tm_isdst=0) 
15

Về mặt kỹ thuật, time.time() không xác định, và trên thực tế, ít nhất là trong CPython, nó trả về một dấu thời gian trong bất cứ định dạng được sử dụng bởi time chức năng tiêu chuẩn cơ bản C thư viện.

Chuẩn C (không khả dụng miễn phí) không cho biết đây là GMT hay không, cũng như không POSIX standard. Nó chỉ nói:

Chức năng time() sẽ trả về giá trị thời gian tính bằng giây kể từ thời đại.

... mà không nói bất cứ điều gì về múi giờ, ngoại trừ việc bạn có thể vượt qua nó để localtime hoặc gmtime để có được một "thời gian bị hỏng xuống" ở các múi giờ địa phương hoặc giờ GMT.

Vì vậy, đây là nền tảng cụ thể. Một nền tảng có thể trả lại bất kỳ thứ gì nó muốn cho time, miễn là nó hoạt động theo cách khiến cho localtimegmtime hoạt động bình thường.

Điều đó đang được nói, đó là thường là sẽ là GMT — hoặc, thay vào đó là UTC (Windows) hoặc UTC-ngoại trừ-nhảy-giây (hầu hết các nền tảng khác). Ví dụ, FreeBSD nói:

Chức năng time() trả về giá trị của thời gian trong vài giây kể từ 0 giờ, 0 phút, 0 giây, ngày 1 tháng 1 năm 1970, Coordinated Universal Time, mà không bao gồm bước nhảy vọt giây.

OS X và nhất BSDs * khác có manpage cùng, Windowslinux/glibc cũng trở lại đặc biệt UTC (có hoặc không có bước nhảy vọt giây) vv

Ngoài ra, các tài liệu hướng dẫn Python nói:

Để tìm hiểu xem thời đại là gì, hãy xem gmtime(0).

Đưa rằng cùng với các định nghĩa cho timegmtime, nó sẽ là công việc nhiều hơn cho một nền tảng để trở timestamps địa phương hơn giờ GMT.(Điều đó được nói, tuyên bố này không thể là tất cả những gì có thẩm quyền, bởi vì nó thực sự không hoàn toàn đúng đối với bất kỳ nền tảng POSIX nào, nhờ giây nhảy vọt.)

Các vấn đề liên quan