Có hai phần:
- Chuyển đổi dấu thời gian unix ("giây kể từ epoch") sang giờ địa phương
- Hiển thị giờ địa phương ở định dạng mong muốn.
Một cách di động để có được giờ địa phương hoạt động ngay cả khi múi giờ địa phương có phần bù utc khác trong quá khứ và python không có quyền truy cập vào cơ sở dữ liệu tz là sử dụng pytz
múi giờ:
#!/usr/bin/env python
from datetime import datetime
import tzlocal # $ pip install tzlocal
unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # get pytz timezone
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)
Để hiển thị nó, bạn có thể sử dụng bất kỳ định dạng thời gian nào được hệ thống của bạn hỗ trợ, ví dụ:
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y")) # print date in your format
Nếu bạn không cần giờ địa phương, để có được thời gian UTC có thể đọc được:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
Nếu bạn không quan tâm đến các vấn đề múi giờ có thể ảnh hưởng đến ngày nào được trả về hoặc nếu python có quyền truy cập vào cơ sở dữ liệu tz trên hệ thống của bạn:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
Trên Python 3, bạn có thể nhận được datetime nhận biết múi giờ chỉ bằng stdlib (phần bù UTC có thể sai nếu python không có quyền truy cập vào cơ sở dữ liệu tz trên hệ thống của bạn, ví dụ: trên Windows):
#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
Các chức năng từ time
mô-đun là các trình bao bọc mỏng xung quanh API C tương ứng và do đó chúng có thể kém khả dụng hơn các datetime
phương thức tương ứng nếu không bạn cũng có thể sử dụng chúng:
#!/usr/bin/env python
import time
unix_timestamp = int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))