Sau khi đọc bài viết này, bạn sẽ học cách tìm sự khác biệt giữa hai ngày trong Python. Ngoài ra, chúng ta sẽ xem cách tính số ngày giữa hai đối tượng ngày và giờ
Mục lục
Cách tính chênh lệch giữa hai ngày theo ngày
Ngày có thể ở bất kỳ dạng nào, chẳng hạn như chuỗi, đối tượng ngày hoặc đối tượng ngày giờ. chúng ta sẽ xem ví dụ về tất cả các trường hợp
Python cung cấp mô-đun datetime để tạo và thao tác ngày và giờ. Các bước dưới đây cho thấy cách sử dụng mô-đun datetime để tính toán sự khác biệt giữa hai ngày theo ngày
- Nhập mô-đun ngày giờ
Mô-đun datetime trong Python cung cấp nhiều chức năng khác nhau để tạo và thao tác ngày và giờ. Sử dụng câu lệnh
from datetime import datetime
để nhập lớpdatetime
từ mô-đun ngày giờ - Chuyển đổi chuỗi ngày thành đối tượng datetime
Có thể có trường hợp ngày ở định dạng chuỗi. Trước khi tính chênh lệch ngày, chúng ta cần chuyển đổi cả hai chuỗi ngày thành đối tượng datetime
Sử dụng hàmDifference is 123 days
0 để chuyển đổi chuỗi ngày thành đối tượng ngày giờ theoDifference is 123 days
1 tương ứng
Các mã định dạng là các chỉ thị tiêu chuẩn để đề cập đến định dạng của chuỗi để phân tích cú pháp. Ví dụ: mã định dạngDifference is 123 days
2 dành choDifference is 123 days
3 - Trừ date2 từ date1
Để có được sự khác biệt giữa hai ngày, hãy trừ date2 từ date1. Kết quả là một đối tượng timedelta. Timedelta đại diện cho một khoảng thời gian là sự khác biệt giữa hai trường hợp ngày, giờ hoặc ngày giờ, đối với độ phân giải micro giây
- Nhận chênh lệch theo ngày
Để lấy số ngày giữa hai ngày, hãy sử dụng thuộc tính
Difference is 123 days
4 - Nhận sự khác biệt trong vài giây
Để có kết quả sau vài giây, hãy sử dụng thuộc tính
Difference is 123 days
5
Thí dụ. Ngày giữa hai ngày
from datetime import datetime
# dates in string format
str_d1 = '2021/10/20'
str_d2 = '2022/2/20'
# convert string to date object
d1 = datetime.strptime[str_d1, "%Y/%m/%d"]
d2 = datetime.strptime[str_d2, "%Y/%m/%d"]
# difference between dates in timedelta
delta = d2 - d1
print[f'Difference is {delta.days} days']
đầu ra
Difference is 123 days
Mã ngắn
Cũng thấy
- Sự khác biệt giữa hai ngày trong tháng
- Chênh lệch thời gian giữa hai lần trong Python
- Tính ngày làm việc giữa hai ngày trong Python
Sự khác biệt giữa hai đối tượng Difference is 123 days
6
Có những trường hợp bạn nhận được ngày tháng trong một đối tượng
Difference is 123 days6 thay vì một chuỗi. Trong những trường hợp như vậy, bạn có thể tính toán trực tiếp sự khác biệt giữa chúng bằng cách thực hiện phép toán trừ
Thí dụ
from datetime import date
def get_difference[date1, date2]:
delta = date2 - date1
return delta.days
d1 = date[2021, 10, 20]
d2 = date[2022, 2, 20]
days = get_difference[d1, d2]
print[f'Difference is {days} days']
đầu ra
Difference is 123 days
Sự khác biệt giữa hai đối tượng datetime
Chúng ta cần làm việc với đối tượng datetime thay vì
Difference is 123 days6 trong một số trường hợp. Đối tượng datetime chứa cả thông tin ngày [năm-tháng-ngày] và thời gian [giờ-phút-giây]. Hãy xem cách tính số ngày giữa hai đối tượng datetime
- Đầu tiên, chuyển đổi chuỗi ngày giờ thành đối tượng
datetime
bằng cách sử dụng hàm
1from datetime import datetime as dt res = [dt.strptime['2022/2/20', "%Y/%m/%d"] - dt.strptime['2021/10/20', "%Y/%m/%d"]].days
- Tiếp theo, tính toán sự khác biệt bằng cách trừ
2 từfrom datetime import datetime as dt res = [dt.strptime['2022/2/20', "%Y/%m/%d"] - dt.strptime['2021/10/20', "%Y/%m/%d"]].days
3from datetime import datetime as dt res = [dt.strptime['2022/2/20', "%Y/%m/%d"] - dt.strptime['2021/10/20', "%Y/%m/%d"]].days
Thí dụ
from datetime import datetime
# datetime in string format
str_dt1 = '2021/10/20 09:15:32.36980'
str_dt2 = '2022/2/20 04:25:42.120450'
# convert string to datetime
dt1 = datetime.strptime[str_dt1, "%Y/%m/%d %H:%M:%S.%f"]
dt2 = datetime.strptime[str_dt2, "%Y/%m/%d %H:%M:%S.%f"]
# difference between datetime in timedelta
delta = dt2 - dt1
print[f'Difference is {delta.days} days']
đầu ra
Difference is 122 days
Ghi chú
Đối tượng timedelta trong Python coi 24 giờ là một ngày và Đối với các ngày theo lịch, bạn sẽ cần làm tròn xuống ngày gần nhất bằng cách xóa một phần ngày ở cả hai bên. Tôi. e. , chúng ta cần đặt giờ, phút và giây thành 0 trong cả ngày giờ