Tin tức và phân tích của tất cả các thiết bị di động

Làm cách nào để tính chênh lệch thời gian trong python?

Khi làm việc với ngày và giờ trong Python, bạn sẽ thường xuyên cần tính toán chênh lệch thời gian. Trong hướng dẫn này, bạn sẽ học cách tính chênh lệch giữa hai dấu thời gian theo giờ, phút và giây.

Đến cuối hướng dẫn này, bạn sẽ học được:

  • cách sử dụng mô-đun datetime của python để làm việc với ngày và giờ,
  • các đối tượng timedelta là gì và chúng hữu ích như thế nào và
  • tính chênh lệch thời gian giữa hai dấu thời gian bất kỳ theo giờ, phút và giây.

Hãy bắt đầu.

Cách sử dụng mô-đun datetime của python

Để làm việc với ngày và giờ trong Python, bạn sẽ sử dụng mô-đun datetime. Mô-đun datetime là một phần của thư viện chuẩn Python. Vì vậy, bạn có thể nhập ngay nó vào môi trường làm việc của mình, như sau:

import datetime

Để tính chênh lệch thời gian, bạn cần tạo hai dấu thời gian khác nhau. Bạn có thể tạo:

  • hai mục hẹn hò,
  • hai đối tượng thời gian, hoặc
  • kết hợp ngày và giờ – các đối tượng datetime.

Cách tạo đối tượng ngày tháng trong python

Hãy nhập lớp ngày tháng từ mô-đun datetime. Để tạo một đối tượng ngày tháng trong Python, bạn có thể sử dụng cú pháp chung datetime.date(,,). Dưới đây là một ví dụ về việc tạo đối tượng ngày date1:

from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)

# Output: 2022-03-27

Bạn có thể thử mã trên trình biên dịch newsblog.pl Python để kiểm tra. Hoặc cài đặt Python trên máy tính của bạn.

Như hình trên, khi bạn in ngày tháng, nó được định dạng theo định dạng YYYY-MM-DD cho ngày tháng.

Lưu ý: Đảm bảo chỉ định tháng dưới dạng số nguyên không có số 0 ở đầu. Có thể bạn đã quen với việc thêm số 0 vào đầu tháng khi lưu ngày tháng.

Ví dụ: để chỉ định một ngày tháng sáu, tháng thứ sáu của năm: sử dụng 6không phải 06.

Ví dụ: hãy thử chạy đoạn mã sau – trong đó tháng được liệt kê là 03 thay vì chỉ 3. Bạn sẽ thấy nó đưa ra một lỗi cú pháp như sau:

date1 = datetime.date(2022,03,27)

print(date1)

# Error Message
File "<ipython-input-12-6eb72084e6ce>", line 1
    date1 = datetime.date(2022,03,27)
                                ^
SyntaxError: invalid token

Bây giờ hãy xem cách tạo một đối tượng thời gian trong Python.

Cách tạo đối tượng thời gian trong python

Để tạo một đối tượng thời gian, hãy nhập một lớp thời gian. Bất kỳ đối tượng thời gian nào trong Python đều có thể được tạo bằng cách sử dụng lớp thời gian bằng cách chỉ định các thuộc tính lớp sau: giờ, phút, giây và micro giây.

Tuy nhiên, tất cả các thuộc tính này là tùy chọn. Nếu bạn không chỉ định một số thuộc tính, hãy nói thứ hai, nó mặc định là 0.

Đoạn mã sau cho biết cách tạo một đối tượng time1 time. Đối với đối tượng ngày tháng, bạn có thể in đối tượng thời gian để xem thời gian được định dạng.

from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)

# Output: 13:27:45.004600

Cách tạo đối tượng datetime trong python

Như bạn có thể thấy, đối tượng ngày tháng không có thông tin về thời gian. Và đối tượng thời gian không chứa thông tin ngày tháng.

Tuy nhiên, trong thực tế, bạn sẽ cần cả thông tin ngày và giờ. Do đó, nên sử dụng lớp datetime để thay thế.

Bạn có thể truy cập lớp datetime và tạo các đối tượng datetime trong python như hình bên dưới:

dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)

# Output: 2022-03-27 13:27:45.046000

Bây giờ, hãy tạo một đối tượng dt2 datetime khác không có thuộc tính thứ hai. Bạn có thể thấy rằng nó được đặt thành 0 – giá trị mặc định.

dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)

# Output: 2022-06-30 14:28:00

Cho đến giờ, bạn đã học cách tạo dấu thời gian trong Python – chẳng hạn như ngày tháng, thời gian và ngày tháng. Đã đến lúc xem cách tính chênh lệch giữa hai dấu thời gian bất kỳ.

Đi đến phần tiếp theo để tìm hiểu.

Cách sử dụng đối tượng timedelta trong python

Trong Python, timedelta có nghĩa là một khoảng thời gian. Đó là sự khác biệt giữa hai đối tượng ngày, giờ hoặc ngày và giờ.

Nếu bạn cộng hoặc trừ hai đối tượng ngày, giờ hoặc ngày và giờ, bạn sẽ nhận được một đối tượng timedelta. Đối tượng đồng bằng thời gian này có các thuộc tính và phương thức hữu ích có thể giúp bạn tính toán chênh lệch thời gian.

Hãy tiếp tục và tính toán sự khác biệt giữa hai đối tượng datetime dt1 và dt2.

dt1 = datetime.datetime(2022,3,27,13,27,45,46000) 
dt2 = datetime.datetime(2022,6,30,14,28) 
tdelta = dt2 - dt1 
print(tdelta) 
print(type(tdelta)) 

# Output 
95 days, 1:00:14.954000 
<class 'datetime.timedelta'>

Từ đoạn mã trên, bạn có thể thấy biến tdelta chứa chênh lệch múi giờ giữa dt1 và dt2. Và loại tdelta được xác thực đối với lớp timedelta bằng cách sử dụng hàm kind() tích hợp sẵn của Python.

Bây giờ hãy mã một ví dụ khác.

Cách tìm chênh lệch múi giờ giữa hai ngày

Hãy lấy một ví dụ đơn giản nhưng thú vị.

Vấn đề: Để tính chênh lệch múi giờ giữa ngày hiện tại (hôm nay) và ngày sinh nhật.
Để thực hiện việc này, hãy đặt ngày hôm nay làm dấu thời gian đầu tiên và ngày sinh của bạn làm dấu thời gian thứ hai.

Trong bước đầu tiên, hãy tạo hai đối tượng datetime:

  • một cho ngày hôm nay, hãy gọi nó là ngày hôm nay, và
  • khác cho một ngày sinh nhật, hãy gọi nó là một sinh nhật

Lớp datetime có phương thức now() trả về ngày và giờ địa phương hiện tại. Vì vậy, hãy sử dụng nó ngày hôm nay – ngày tham khảo của chúng tôi.

today = datetime.datetime.now()
print(today)

# Sample Output: 2022-01-22 09:10:18.489538

Trong đoạn mã dưới đây, hãy thay thế bday bằng ngày sinh nhật của bạn để tính thời gian còn lại cho đến ngày sinh nhật của bạn trong năm nay.

Nếu bạn đang đọc nội dung này sau ngày sinh nhật của mình, bạn có thể đặt ngày sinh nhật thành ngày sinh nhật tiếp theo của mình.

bday = datetime.datetime(2022,8,30,11,59)
print(bday)

# Sample Output: 2022-08-30 11:59:00

Bước tiếp theo là tính toán time_diff là đối tượng timedlet như đã giải thích trước đó. Chỉ cần trừ ngày hôm nay từ ngày sinh nhật của bạn và bạn sẽ nhận được chênh lệch múi giờ.

time_diff = bday - today
print(f"Your birthday is in {time_diff}")

# Output
Your birthday is in 220 days, 2:46:00.127416

Để biết số ngày còn lại, sử dụng thuộc tính days trong time_diff như hình:

tdays = time_diff.days
print(f"Your birthday is in {tdays} days.")

# Output
Your birthday is in 220 days.

Cách tìm chênh lệch thời gian tính bằng giây

Bây giờ hãy tính xem bạn cách ngày sinh của mình bao nhiêu giây.

Để tính tổng chênh lệch thời gian tính bằng giây, hãy sử dụng phương thức total_seconds() trong đối tượng timedelta time_diff.

tsecs = time_diff.total_seconds()
print(f"Your birthday is {tsecs} seconds away.")

# Output
Your birthday is 19017960.127416 seconds away.

Thôi, đợi lâu quá!

Điều đó nói rằng, bây giờ bạn đã biết cách tính chênh lệch thời gian giữa hai dấu thời gian bất kỳ tính bằng giây.

Bây giờ chúng ta hãy quay trở lại vấn đề cơ bản và viết ra những điều sau đây. Một ngày bao gồm 24 giờ, một giờ là 60 phút và 60 giây là một phút.

Điều này được tóm tắt trong hình dưới đây:

Giờ, phút và giây

Để chuyển đổi giây sang phút, giờ và ngày, bạn có thể sử dụng bảng bên dưới và chia cho hệ số chuyển đổi thích hợp.

Bảng chuyển đổi thời gian

Trong các phần tiếp theo, hãy chuyển đổi chênh lệch thời gian tính bằng giây sang phút và giờ.

Cách tìm chênh lệch múi giờ tính bằng phút

Để biết chênh lệch thời gian tính bằng phút, chỉ cần chia tổng số giây cho 60.

Hãy chia tsecs cho 60 và lưu trữ nó trong một biến có tên là tmins như sau:

tmins = tsecs/60
print(f"Your birthday is {tmins} minutes away.")

# Output
Your birthday is 316966.0021236 minutes away.

Làm thế nào để tìm sự khác biệt thời gian trong giờ?

Bây giờ bạn đã tính được chênh lệch thời gian tính bằng phút, bạn có thể chia nó cho hệ số 60 để có được chênh lệch giờ. Bạn cũng có thể chia tổng số giây cho 60*60 = 3600.

thrs = tsecs/(60*60)
print(f"Your birthday is {thrs} hours away.")

# Output
Your birthday is 5282.76670206 hours away.

Vì vậy, bây giờ bạn đã học cách tính chênh lệch thời gian theo bất kỳ đơn vị nào bạn chọn.

Đăng kí

Trong hướng dẫn này, bạn đã học được:

  • tạo và làm việc với ngày và giờ bằng mô-đun datetime của python,
  • sử dụng các đối tượng timedelta để có khoảng thời gian hoặc chênh lệch thời gian, tôi
  • tính chênh lệch thời gian tính bằng giây, phút và giờ.

Tôi hy vọng bạn tìm thấy hướng dẫn này hữu ích. Bây giờ bạn đã biết tất cả về cách tính chênh lệch thời gian trong Python, đã đến lúc kiểm tra kỹ năng của bạn.

Chúc bạn học tập và viết mã vui vẻ!

Tìm hiểu cách viết mã bằng nhau hoặc không bằng nhau hoặc tạo trò chơi rắn săn mồi bằng Python tại đây.

Mục lục