Làm cách nào để thêm thời gian vào datetime trong Python?

Trong bài viết này, chúng ta sẽ thảo luận về ba cách khác nhau để thêm số phút vào dấu thời gian nhất định trong python. Sử dụng timedelta, pandas hoặc relativedelta

Giả sử chúng tôi có dấu thời gian ở định dạng chuỗi và chúng tôi muốn thêm N phút vào dấu thời gian đó. Ở đây N có thể là bất kỳ số nào. Nhưng điều thú vị là, chúng tôi chỉ muốn dấu thời gian cuối cùng ở định dạng chuỗi đã cho, sau khi thêm N phút vào đó. Hãy xem làm thế nào để làm điều đó,

Thêm phút vào dấu thời gian trong Python bằng timedelta

Python có một mô-đun datetime để thao tác ngày và giờ. Nó bao gồm các lớp sau, ngày, giờ, datetime, timedelta, tzinfo. Để thêm N phút vào một dấu thời gian nhất định, chúng ta sẽ sử dụng hai lớp của mô-đun ngày giờ i. e. ngày giờ và timedelta

Các bước để thêm N phút vào datetime như sau,

  • Bước 1. Nếu dấu thời gian đã cho ở định dạng chuỗi, thì hãy chuyển đổi nó thành đối tượng datetime bằng cách sử dụng datetime. hàm strptime(). Nếu không bạn có thể bỏ qua bước này
  • Bước 2. Tạo một đối tượng của timedelta, để biểu thị khoảng thời gian N phút. Đối với điều đó, hãy chuyển đối số phút với giá trị N trong hàm tạo timedelta
  • Bước 3. Thêm đối tượng timedelta vào đối tượng datetime đã tạo ở bước 1. Nó sẽ cung cấp cho chúng ta một đối tượng datetime mới, trỏ đến một dấu thời gian mới i. e. N phút sau dấu thời gian đã cho
  • Bước 4. Nếu bạn cần dấu thời gian cuối cùng trong chuỗi, hãy sử dụng strftime() để chuyển đổi đối tượng datetime thành chuỗi. Đối với điều đó, hãy chuyển chuỗi định dạng làm đối số cho strftime() và nó sẽ chuyển đổi đối tượng datetime thành một chuỗi có định dạng đã chỉ định

Hãy hiểu với một ví dụ,

quảng cáo

Thêm 15 phút vào dấu thời gian trong python

from datetime import datetime
from datetime import timedelta

# Given timestamp in string
time_str = '23/2/2020 11:12:22.234513'
date_format_str = '%d/%m/%Y %H:%M:%S.%f'

# create datetime object from timestamp string
given_time = datetime.strptime(time_str, date_format_str)

print('Given timestamp: ', given_time)

n = 15
# Add 15 minutes to datetime object
final_time = given_time + timedelta(minutes=n)

print('Final Time (15 minutes after given time ): ', final_time)

# Convert datetime object to string in specific format 
final_time_str = final_time.strftime('%d/%m/%Y %H:%M:%S.%f')
print('Final Time as string object: ', final_time_str)

đầu ra

Given timestamp:  2020-02-23 11:12:22.234513
Final Time (15 minutes after given time ):  2020-02-23 11:27:22.234513
Final Time as string object:  23/02/2020 11:27:22.234513

Chúng tôi đã thêm 15 phút vào dấu thời gian ’23/2/2020 11. 12. 22. 234513′ để thành ’23/02/2020 11. 27. 22. 234513′

Nó đã thêm một timedelta (có thời lượng 15 phút) vào đối tượng datetime, do đó, nó trả về một đối tượng datetime mới trỏ đến dấu thời gian mới. Sau đó, nó đã chuyển đổi đối tượng datetime cuối cùng sang định dạng chuỗi được yêu cầu bằng cách sử dụng datetime. strftime(). Nếu bạn muốn chuỗi dấu thời gian cuối cùng ở một số định dạng khác, thì bạn có thể thay đổi chuỗi định dạng trong khi sử dụng strptime() & strftime()

Thêm phút vào dấu thời gian đã cho trong Python bằng Pandas

Pandas cung cấp một lớp DateOffset, để lưu trữ thông tin về thời lượng hoặc khoảng thời gian. Nó chủ yếu được sử dụng để tăng hoặc giảm dấu thời gian. Nó có thể được sử dụng với mô-đun datetime để thêm N phút vào một datetime. Hãy hiểu với một ví dụ,

Thêm 3 phút vào ngày giờ trong python

from datetime import datetime
import pandas as pd

# Given timestamp in string
time_str = '23/2/2020 11:12:22.234513'
date_format_str = '%d/%m/%Y %H:%M:%S.%f'

# create datetime object from timestamp string
given_time = datetime.strptime(time_str, date_format_str)

print('Given timestamp: ', given_time)

n = 3
# Add 3 minutes to datetime object
final_time = given_time + pd.DateOffset(minutes=n)

print('Final Time (3 minutes after given time ): ', final_time)

# Convert datetime object to string in specific format 
final_time_str = final_time.strftime('%d/%m/%Y %H:%M:%S.%f')
print('Final Time as string object: ', final_time_str)

đầu ra

Given timestamp:  2020-02-23 11:12:22.234513
Final Time (3 minutes after given time ):  2020-02-23 11:15:22.234513 
Final Time as string object:  23/02/2020 11:15:22.234513

Chúng tôi đã tạo một đối tượng DateOffset bằng cách chuyển đối số phút là 3. Sau đó thêm nó vào đối tượng datetime. Nó trả về một đối tượng thời gian mới trỏ đến một dấu thời gian khác tôi. e. sau 3 phút kể từ dấu thời gian nhất định

Thêm phút vào dấu thời gian đã cho trong python bằng relativedelta

Trong mô-đun dateutil của python, có một lớp relativedelta đại diện cho một khoảng thời gian. Lớp relativedelta này có tất cả các thuộc tính để biểu diễn khoảng thời gian tôi. e. Năm, Tháng, Ngày, Giờ, Phút, Giây và Micro giây

Vì vậy, để thêm số phút vào một dấu thời gian nhất định, chúng ta có thể tạo một đối tượng relativedelta để biểu thị khoảng thời gian tính bằng phút và sau đó thêm nó vào đối tượng datetime chứa ngày tháng. Hãy hiểu với một ví dụ,

Thêm 30 phút vào dấu thời gian trong python

from datetime import datetime
from dateutil.relativedelta import relativedelta

# Given timestamp in string
time_str = '23/2/2020 11:12:22.234513'
date_format_str = '%d/%m/%Y %H:%M:%S.%f'

# create datetime object from timestamp string
given_time = datetime.strptime(time_str, date_format_str)

print('Given timestamp: ', given_time)

n = 30
# Add 30 minutes to datetime object
final_time = given_time + relativedelta(minutes=n)

print('Final Time (30 minutes after given time ): ', final_time)

# Convert datetime object to string in specific format 
final_time_str = final_time.strftime('%d/%m/%Y %H:%M:%S.%f')
print('Final Time as string object: ', final_time_str)

đầu ra

Given timestamp:  2020-02-23 11:12:22.234513
Final Time (30 minutes after given time ):  2020-02-23 11:42:22.234513
Final Time as string object:  23/02/2020 11:42:22.234513

Vì dấu thời gian đã cho ở định dạng chuỗi, vì vậy chúng tôi đã chuyển đổi nó thành datetime. Sau đó, chúng tôi đã tạo một đối tượng relativedelta đại diện cho 30 phút bằng cách chuyển đối số phút là 30. Sau đó, chúng tôi đã thêm nó vào đối tượng datetime. Nó trả về một đối tượng datetime trỏ đến dấu thời gian mới i. e. ba mươi phút sau dấu thời gian nhất định