So sánh 4 cách phổ biến nhất để làm điều này, cho độ chính xác:
Phương pháp 1: Tính toán thủ công
from datetime import datetime total1 = int(datetimeobj.strftime('%S')) total1 += int(datetimeobj.strftime('%M')) * 60 total1 += int(datetimeobj.strftime('%H')) * 60 * 60 total1 += (int(datetimeobj.strftime('%j')) - 1) * 60 * 60 * 24 total1 += (int(datetimeobj.strftime('%Y')) - 1970) * 60 * 60 * 24 * 365 print ("Method #1: Manual") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total1) print ("After: %s" % datetime.fromtimestamp(total1))Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00Output:
Kiểm tra độ chính xác: Thất bại (dịch chuyển múi giờ)
Phương pháp 2: Mô -đun thời gian
import time from datetime import datetime total2 = int(time.mktime(datetimeobj.timetuple())) print ("Method #2: Time Module") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total2) print ("After: %s" % datetime.fromtimestamp(total2))Method #2: Time Module Before: 1970-10-01 12:00:00 Seconds: 23616000 After: 1970-10-01 12:00:00Output:
Kiểm tra độ chính xác: vượt qua
Phương pháp 3: Mô -đun Lịch
import calendar from datetime import datetime total3 = calendar.timegm(datetimeobj.timetuple()) print ("Method #3: Calendar Module") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total3) print ("After: %s" % datetime.fromtimestamp(total3))Method #3: Calendar Module Before: 1970-10-01 12:00:00 Seconds: 23616000 After: 1970-10-01 16:00:00Output:
Kiểm tra độ chính xác: Thất bại (dịch chuyển múi giờ)
Phương pháp 2: Mô -đun thời gian
from datetime import datetime total4 = datetimeobj.timestamp() print ("Method #4: datetime timestamp") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total4) print ("After: %s" % datetime.fromtimestamp(total4))Method #2: Time Module Before: 1970-10-01 12:00:00 Seconds: 23616000 After: 1970-10-01 12:00:00Output:
Kiểm tra độ chính xác: vượt qua
Phương pháp 3: Mô -đun Lịch
- Phương pháp 4: DateTime Datchestamp
- Sự kết luận
- Tất cả 4 phương thức chuyển đổi DateTime thành Epoch (tổng số giây)
- Cả phương thức thủ công và phương pháp mô -đun lịch đều nhận thức được múi giờ.
Trong bài viết này, chúng tôi sẽ học cách chuyển đổi đối tượng DateTime thành giây trong Python. Chúng tôi sẽ sử dụng một số mô-đun tích hợp có sẵn và một số mã tùy chỉnh cũng như thấy chúng hoạt động. Trước tiên chúng ta hãy có một cái nhìn nhanh về những gì là ngày trong Python.
Ngày trong Python
Trong Python, chúng ta có thể làm việc trên các chức năng ngày bằng cách nhập mô-đun tích hợp Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 1 có sẵn trong Python. Chúng tôi có các đối tượng ngày để làm việc với ngày. Mô -đun DateTime này chứa ngày ở dạng năm, tháng, ngày, giờ, phút, thứ hai và micro giây. Mô -đun DateTime có nhiều phương thức để trả về thông tin về đối tượng ngày. Nó yêu cầu các giá trị ngày, tháng và năm để tính toán hàm. Các hàm ngày và thời gian được so sánh như biểu thức toán học giữa các số khác nhau.
Chuyển đổi đối tượng DateTime thành giây
Trong Python, mô -đun ngày và giờ cung cấp các chức năng khác nhau cho việc thao tác ngày. Chúng ta cũng có thể chuyển đổi một đối tượng Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 1 thành vài giây bằng cách áp dụng các hoạt động toán học. Đối với chuyển đổi này, mô -đun DateTime cung cấp phương thức Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 3, phương thức Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 4 và phương thức Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 5 để chuyển đổi đối tượng DateTime thành giây. Ngày bắt đầu thường được chỉ định trong UTC, vì vậy để có kết quả thích hợp, Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 1 bạn ăn vào công thức này cũng nên ở UTC. Nếu Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 1 của bạn chưa ở UTC, bạn sẽ cần phải chuyển đổi nó trước khi sử dụng nó.
Ví dụ: Phương thức Total_Seconds ()
1. Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 8 định dạng dấu thời gian đầu vào vào HH: mm: SS.
2. Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 9 Mất một năm, tháng, ngày là đối số để tạo đối tượng DateTime.
3. import time from datetime import datetime total2 = int(time.mktime(datetimeobj.timetuple())) print ("Method #2: Time Module") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total2) print ("After: %s" % datetime.fromtimestamp(total2)) 0 Trả về tổng số giây.
Ví dụ dưới đây đưa chuỗi thời gian vào định dạng chấp nhận được của HH: MM: SS. Python cung cấp một hoạt động trên DateTime để tính toán sự khác biệt giữa hai ngày. Nó tìm thấy sự khác biệt giữa đối tượng DateTime ban đầu và đối tượng DateTime được tạo từ chuỗi thời gian. Giá trị được trả về là một đối tượng TimeDelta mà từ đó chúng ta có thể sử dụng hàm TOTAL_SECONDS () để lấy giá trị tính bằng giây.
import datetime time = "01:01:09" date_time = datetime.datetime.strptime(time, "%H:%M:%S") a_timedelta = date_time - datetime.datetime(1900, 1, 1) seconds = a_timedelta.total_seconds() print(seconds)
3669.0
Ví dụ: Sử dụng phương thức Timestamp ()
Python 3 cung cấp phương thức import time from datetime import datetime total2 = int(time.mktime(datetimeobj.timetuple())) print ("Method #2: Time Module") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total2) print ("After: %s" % datetime.fromtimestamp(total2)) 1 để dễ dàng chuyển đổi đối tượng DateTime thành giây. Phương pháp này sẽ chỉ hữu ích nếu bạn cần số giây từ 1970-01-01 UTC. Nó trả về một giá trị float đại diện cho các phân số của một giây. Giả định rằng đối tượng DateTime đại diện cho thời gian địa phương, tức là nó sẽ là số giây từ thời điểm hiện tại tại vị trí của bạn đến 1970-01-01 UTC.
from datetime import datetime #get current date dt = datetime.today() seconds = dt.timestamp() print(seconds)
1613408089.609163
Ví dụ: Sử dụng phương thức Lịch.Timegm ()
Python 3 cung cấp một thư viện tiêu chuẩn gọi là import time from datetime import datetime total2 = int(time.mktime(datetimeobj.timetuple())) print ("Method #2: Time Module") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total2) print ("After: %s" % datetime.fromtimestamp(total2)) 2 có phương thức import time from datetime import datetime total2 = int(time.mktime(datetimeobj.timetuple())) print ("Method #2: Time Module") print ("Before: %s" % datetimeobj) print ("Seconds: %s " % total2) print ("After: %s" % datetime.fromtimestamp(total2)) 3 để dễ dàng chuyển đổi đối tượng DateTime thành giây. Phương pháp này chuyển đổi một datetime thành vài giây kể từ thời đại epoch 1970-01-01 UTC. Khi phương thức dấu thời gian trên () trả về giá trị nổi, phương thức này sẽ loại bỏ các phân số của một giây.
from datetime import datetime #get current date dt = datetime.today() seconds = dt.timestamp() print(seconds)
1613408988
Sự kết luận
Trong bài viết này, chúng tôi đã học cách chuyển đổi một đối tượng DateTime thành định dạng giây bằng cách sử dụng mô -đun Method #1: Manual Before: 1970-10-01 12:00:00 Seconds: 23630400 After: 1970-10-01 16:00:00 1. Chúng tôi đã thảo luận về hoạt động của các chức năng DateTime bằng cách sử dụng các đoạn mã khác nhau.