datetime.datetime.fromtimestamp()
là chính xác, ngoại trừ bạn có thể có dấu thời gian bằng mili giây (như trong JavaScript), nhưng fromtimestamp()
hy vọng dấu thời gian Unix, tính bằng giây.
Làm điều đó như thế:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp/1e3)
và kết quả là:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
Liệu nó trả lời câu hỏi của bạn?
EDIT: J.F. Sebastian gợi ý một cách chính xác để sử dụng đúng bộ phận bởi 1e3
(float 1000
). Sự khác biệt là đáng kể, nếu bạn muốn nhận được kết quả chính xác, do đó tôi đã thay đổi câu trả lời của mình. Sự khác biệt kết quả từ hành vi mặc định của Python 2.x, luôn trả về int
khi chia (sử dụng toán tử /
) int
bởi int
(điều này được gọi là phân chia tầng). Bằng cách thay thế số chia 1000
(là một int
) với (đại diện là của 1000
như float) 1e3
ước hoặc với float(1000)
(hoặc 1000.
vv), bộ phận trở thành đúng bộ phận. Python 2.x trở float
khi chia int
bởi float
, float
bởi int
, float
bởi float
vv Và khi có một số phần phân đoạn trong dấu thời gian trôi qua để fromtimestamp()
phương pháp, kết quả của phương pháp này cũng chứa các thông tin về điều đó một phần phân đoạn (như số của micro giây).
sử dụng phân chia thực sự: '/ 1e3' – jfs
@ J.F.Sebastian: Bạn hoàn toàn chính xác, tôi đã chỉnh sửa câu trả lời của mình và thêm một số giải thích lý do bạn đúng. Nếu bạn không đồng ý với lời giải thích, vui lòng cho tôi biết. – Tadeck
Tôi tìm thấy rõ ràng hơn để viết x * 0,001 thay vì x/1e3 –