Tôi cần tạo một dấu thời gian UNIX trong thời gian UTC vì vậy tôi đang sử dụng time.time()
để tạo ra nó.
Tôi có cần phải làm bất kỳ điều gì khác hoặc là dấu thời gian tự động trong UTC không?Hiện thời gian của Python() trả về một dấu thời gian trong UTC?
Trả lời
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:
time.localtime([secs])
- Giờ địa phương theo quy định của hệ thống điều hành của bạntime.gmtime([secs])
- UTC
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)
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 localtime
và gmtime
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, Windows và linux/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 time
và gmtime
, 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.)