Mặc dù tất cả các mã Python mà bạn đã thấy cho đến nay, rất có thể bạn đã bỏ lỡ phần "để làm gì khác" sau đây mà tôi cũng đã thấy lần đầu tiên cách đây vài tuần
Đây là một phương pháp lặp qua danh sách "for-else", trong đó mặc dù có một lần lặp qua danh sách, bạn cũng có một điều kiện "khác", điều này khá bất thường
Đây không phải là điều mà tôi từng thấy ở các ngôn ngữ lập trình khác như Java, Ruby hay JavaScript
Hãy xem một ví dụ về giao diện của nó trong thực tế
Giả sử rằng chúng ta đang cố kiểm tra xem không có số lẻ nào trong danh sách hay không
Hãy lặp lại nó
numbers = [2, 4, 6, 8, 1] for number in numbers: if number % 2 == 1: print[number] break else: print["No odd numbers"]
Trường hợp tìm được số lẻ thì số đó sẽ được in ra do ngắt sẽ được thực hiện và nhánh khác sẽ bị bỏ qua
Chúng tôi sẽ bắt đầu bằng cách xác định dấu thời gian ngày giờ của chúng tôi. Sau đó chúng tôi xác định một timedelta. Timedelta theo mặc định được biểu thị bằng ngày và giờ. Do đó, sau đó chúng tôi sử dụng phương thức total_seconds[] để tính chênh lệch tính bằng giây
import datetime
#define the timestamps
start_time = datetime.datetime[2022,8,19,15,30,0]
end_time = datetime.datetime[2022,8,25,20,30,0]
#define a timedelta object
elapsed_time = end_time - start_time
#calculate the difference in seconds
time_seconds = [elapsed_time].total_seconds[]
print['The elapsed time is: ' + str[time_seconds] +' seconds']
Kết quả sẽ là
The elapsed time is: 536400.0 seconds
Quan trọng. Trước khi làm việc với mô-đun datetime, hãy đảm bảo rằng bạn đã nhập nó vào chương trình Python của mình. Nếu không, bạn sẽ nhận được lỗi tên sau
NameError: name 'datetime' is not defined
Tính chênh lệch thời gian theo phút và giờ
Theo cách tương tự, chúng ta có thể thực hiện các điều chỉnh bổ sung để tìm thời gian tính bằng phút
time_minutes = [end_time - start_time].total_seconds[]/60
print['The elapsed time is: ' + str[time_minutes] +' minutes']
Điều này sẽ trở lại
The elapsed time is: 8940.0 minutes
Và trong nhiều giờ
time_hours = [end_time - start_time].total_seconds[]/3600
print['The elapsed time is: ' + str[time_hours] +' hours']
Sẽ trở lại
The elapsed time is: 149.0 hours
Tính chênh lệch múi giờ với Pandas
Trong Pandas, tính toán thời gian hoạt động khá giống nhau. Dưới đây là một ví dụ nhỏ, thông thường dữ liệu của bạn sẽ được sắp xếp theo các cột chứa dấu thời gian. Tuy nhiên, cơ học là tương tự
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
The elapsed time is: 536400.0 seconds
7 để nhập lớpThe elapsed time is: 536400.0 seconds
8 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.
Mã định dạng là 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
import datetime
#define the timestamps
start_time = datetime.datetime[2022,8,19,15,30,0]
end_time = datetime.datetime[2022,8,25,20,30,0]
#define a timedelta object
elapsed_time = end_time - start_time
#calculate the difference in seconds
time_seconds = [elapsed_time].total_seconds[]
print['The elapsed time is: ' + str[time_seconds] +' seconds']
4đầu ra
________số 8Mã ngắn
import datetime
#define the timestamps
start_time = datetime.datetime[2022,8,19,15,30,0]
end_time = datetime.datetime[2022,8,25,20,30,0]
#define a timedelta object
elapsed_time = end_time - start_time
#calculate the difference in seconds
time_seconds = [elapsed_time].total_seconds[]
print['The elapsed time is: ' + str[time_seconds] +' seconds']
6Cũ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 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ụ
import datetime
#define the timestamps
start_time = datetime.datetime[2022,8,19,15,30,0]
end_time = datetime.datetime[2022,8,25,20,30,0]
#define a timedelta object
elapsed_time = end_time - start_time
#calculate the difference in seconds
time_seconds = [elapsed_time].total_seconds[]
print['The elapsed time is: ' + str[time_seconds] +' seconds']
9đầu ra
________số 8Sự khác biệt giữa hai đối tượng The elapsed time is: 536400.0 seconds
8
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
- Trước tiên, hãy chuyển đổi chuỗi ngày giờ thành đối tượng
The elapsed time is: 536400.0 seconds
8 bằng cách sử dụng hàm
61import datetime #define the timestamps start_time = datetime.datetime[2022,8,19,15,30,0] end_time = datetime.datetime[2022,8,25,20,30,0] #define a timedelta object elapsed_time = end_time - start_time #calculate the difference in seconds time_seconds = [elapsed_time].total_seconds[] print['The elapsed time is: ' + str[time_seconds] +' seconds']
- Tiếp theo, tính toán sự khác biệt bằng cách trừ
62 từimport datetime #define the timestamps start_time = datetime.datetime[2022,8,19,15,30,0] end_time = datetime.datetime[2022,8,25,20,30,0] #define a timedelta object elapsed_time = end_time - start_time #calculate the difference in seconds time_seconds = [elapsed_time].total_seconds[] print['The elapsed time is: ' + str[time_seconds] +' seconds']
63import datetime #define the timestamps start_time = datetime.datetime[2022,8,19,15,30,0] end_time = datetime.datetime[2022,8,25,20,30,0] #define a timedelta object elapsed_time = end_time - start_time #calculate the difference in seconds time_seconds = [elapsed_time].total_seconds[] print['The elapsed time is: ' + str[time_seconds] +' seconds']
Thí dụ
The elapsed time is: 536400.0 seconds5
đầu ra
The elapsed time is: 536400.0 seconds6
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ờ