Làm cách nào để nhận được sự khác biệt giữa hai ngày và phút trong python?

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

  1. 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ớp
    The elapsed time is: 536400.0 seconds
    8 từ mô-đun ngày giờ

  2. 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àm

    Difference is 123 days
    0 để chuyển đổi chuỗi ngày thành đối tượng ngày giờ theo
    Difference 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ạng
    Difference is 123 days
    2 dành cho
    Difference is 123 days
    3

  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

  4. 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

  5. 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ố 8

Mã 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']
6

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 trong một đối tượng

Difference is 123 days
6 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ố 8

Sự 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 days
6 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 
    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']
    61
  • Tiếp theo, tính toán sự khác biệt bằng cách trừ
    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']
    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']
    63

Thí dụ

The elapsed time is: 536400.0 seconds
5

đầu ra

The elapsed time is: 536400.0 seconds
6

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ờ

Chủ Đề