Trong Python, làm cách nào để chuyển đổi một datetime.datetime
thành loại float
mà tôi sẽ nhận được từ hàm time.time
?Python: Chuyển đổi từ `datetime.datetime` sang` time.time`
Trả lời
Nó không khó để sử dụng phương pháp thời gian tuple và vẫn giữ lại micro:
>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2011, 11, 5, 11, 26, 15, 37496)
>>> time.mktime(t.timetuple()) + t.microsecond/1E6
1320517575.037496
Bạn có thể giải thích tại sao giải pháp này tốt hơn '(dt - datetime.datetime.utcfromtimestamp (0)). Total_seconds()'? Việc bổ sung bằng tay micro giây dường như không phù hợp với tôi. –
@RamRachum: công thức của bạn giả định rằng 'dt' là thời gian UTC. 'mktime()' giả định rằng đầu vào là thời gian cục bộ. Bạn nên tránh sử dụng các đối tượng datetime ngây thơ đại diện cho giờ địa phương trừ khi bạn muốn hiển thị chúng ngay lập tức. Sử dụng thời gian UTC hoặc các đối tượng datetime nhận biết múi giờ thay thế. – jfs
Cho một đối tượng datetime.datetime
dt
, bạn có thể sử dụng
(dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()
Ví dụ:
>>> dt = datetime.datetime.now(); t = time.time()
>>> t
1320516581.727343
>>> (dt - datetime.datetime.utcfromtimestamp(0)).total_seconds()
1320516581.727296
Lưu ý rằng phương pháp timedelta.total_seconds()
đã được giới thiệu trong Python 2.7.
'((24 * 3600 * td.days + td .seconds) * 1000000 + td.microseconds)/1e6' trên Python <2.7 – jfs
Một sự kết hợp của datetime.timetuple()
và time.mktime()
:
>>> import datetime
>>> import time
>>> now = datetime.datetime.now()
>>> secondsSinceEpoch = time.mktime(now.timetuple())
Điều này giảm phụ phần thứ hai của thời gian. –
+1 bởi vì câu trả lời này là hữu ích anyway và downvote là không hợp lý. –
+1 từ tôi nữa. Tôi đồng ý với Sven về cả hai số :-) –
time.mktime(dt_obj.timetuple())
Nên làm các trick.
Điều này sẽ giảm phần phụ của thời gian. –
+1 bởi vì câu trả lời này là hữu ích anyway và downvote là không hợp lý. –
Tôi biết đây là một câu hỏi cũ, nhưng trong python 3.3+ hiện nay là một cách dễ dàng hơn để làm điều này bằng cách sử dụng datetime.timestamp() phương pháp:
from datetime import datetime
timestamp = datetime.now().timestamp()
'timestamp = time.time()' – jfs
Điều đó sẽ xử lý trường hợp cụ thể này (tìm dấu thời gian hiện tại), nhưng sử dụng '' datetime.timestamp() '' là mạnh hơn vì nó cho phép bạn tìm dấu thời gian tại một datetime tùy ý. – lsowen
Cung cấp một ví dụ tốt hơn sau đó. Bởi vì '.now(). Dấu thời gian()' là nghiêm trọng hơn 'time.time()'. Các cựu có thể sản xuất một kết quả sai trong quá trình chuyển đổi DST. Một ví dụ tốt hơn: '.now (utc) .timestamp()' (ít nhất, nó tạo ra kết quả đúng). – jfs
- 1. Chuyển đổi Python sang R
- 2. Chuyển đổi dấu thời gian kể từ kỷ nguyên để datetime.datetime
- 3. Chuyển đổi chương trình từ QBasic sang Python
- 4. Chuyển đổi danh sách sang từ điển bằng Python
- 5. Công cụ chuyển đổi từ Python sang C
- 6. Python chuyển đổi args sang kwargs
- 7. Chuyển đổi từ mod_python sang mod_wsgi
- 8. Di chuyển từ Java sang Python
- 9. chuyển đổi html sang .doc bằng Python?
- 10. Chuyển đổi PDF sang HTML bằng Python
- 11. chuyển đổi excel sang pdf trong python
- 12. Lua: chuyển đổi từ phao sang int
- 13. Chuyển đổi sang và từ lịch Hindu
- 14. Chèn đối tượng datetime.datetime Python vào MySQL
- 15. Python: chuyển từ optparse sang argparse
- 16. Di chuyển từ Stata sang Python
- 17. Chuyển từ python-mode.el sang python.el
- 18. python cách chuyển đổi ngày giờ thành số thập phân
- 19. Chuyển đổi từ BitArray sang Byte
- 20. chuyển đổi từ EST/EDT sang GMT
- 21. Chuyển đổi từ IEnumerable sang Danh sách
- 22. Cách chuyển đổi từ markdown sang pdf
- 23. Chuyển đổi từ RGB int sang Hex
- 24. Chuyển đổi từ Mercurial sang Subversion
- 25. Chuyển đổi sang Luồng từ Url
- 26. Chuyển đổi từ C++ sang Java
- 27. Loại Chuyển đổi từ C sang Java
- 28. Chuyển đổi từ IplImage * sang cv :: MAT
- 29. Chuyển đổi từ nguyên mẫu sang jQuery
- 30. Làm thế nào để chuyển đổi sang một đối tượng datetime Python với JSON.loads?
liên quan: [Chuyển đổi datetime.date để UTC timestamp bằng Python] (http://stackoverflow.com/a/8778548/4279) – jfs