มีสองส่วนคือ
- แปลงการประทับเวลา unix ("วินาทีนับตั้งแต่ยุค") เป็นเวลาท้องถิ่น
- แสดงเวลาท้องถิ่นในรูปแบบที่ต้องการ
วิธีแบบพกพาในการรับเวลาท้องถิ่นที่ใช้งานได้แม้ว่าเขตเวลาท้องถิ่นจะมีอ็อฟเซ็ต utc ที่แตกต่างกันในอดีตและไพ ธ อนไม่สามารถเข้าถึงฐานข้อมูล tz คือการใช้pytz
เขตเวลา:
#!/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)
ในการแสดงคุณสามารถใช้รูปแบบเวลาใดก็ได้ที่ระบบของคุณรองรับเช่น:
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
หากคุณไม่ต้องการเวลาท้องถิ่นให้รับเวลา UTC ที่สามารถอ่านได้แทน:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
หากคุณไม่สนใจเกี่ยวกับปัญหาเขตเวลาที่อาจส่งผลต่อวันที่ที่ถูกส่งคืนหรือถ้าไพ ธ อนสามารถเข้าถึงฐานข้อมูล tz ในระบบของคุณ:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
บน Python 3 คุณจะได้รับ datetime ที่ทราบเขตเวลาโดยใช้เฉพาะ stdlib (อ็อฟเซ็ต UTC อาจผิดถ้า python ไม่สามารถเข้าถึงฐานข้อมูล tz บนระบบของคุณเช่นบน 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)"))
ฟังก์ชั่นจากtime
โมดูลเป็นตัวห่อรอบ ๆ C API ที่เกี่ยวข้องและดังนั้นพวกเขาอาจจะพกพาได้น้อยกว่าdatetime
วิธีที่สอดคล้องกันมิฉะนั้นคุณสามารถใช้พวกเขาด้วย:
#!/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))