Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau để thêm giờ vào dấu thời gian nhất định trong python bằng cách sử dụng timedelta, pandas hoặc relativedelta
Giả sử bạn có dấu thời gian ở dạng chuỗi và bạn muốn thêm N giờ vào đó, trong đó N có thể là bất kỳ số nào. Nhưng bạn muốn dấu thời gian cuối cùng sau khi thêm N giờ, ở định dạng chuỗi đã cho. Hãy xem làm thế nào để làm điều đó,
Thêm giờ vào dấu thời gian trong Python bằng timedelta
Python cung cấp một mô-đun datetime để thao tác ngày và giờ. Nó bao gồm các lớp sau,
- ngày giờ. ngày. Một đối tượng của lớp ngày chỉ định một ngày sử dụng năm, tháng và ngày
- ngày giờ. thời gian. Một đối tượng của lớp thời gian chỉ định dấu thời gian sử dụng giờ, phút, giây, micro giây và tzinfo
- ngày giờ. ngày giờ. Một đối tượng của datetime là sự kết hợp của ngày và giờ
- ngày giờ. múi giờ. Khoảng thời gian, đại diện cho sự khác biệt giữa hai ngày hoặc thời gian hoặc ngày giờ
- ngày giờ. tzinfo. Nó chứa thông tin múi giờ
Để thêm giờ trong một dấu thời gian nhất định, chúng ta sẽ sử dụng các lớp datetime và timedelta của mô-đun datetime
Các bước để thêm N giờ vào datetime như sau,
quảng cáo
- Bước 1. Nếu dấu thời gian đã cho ở định dạng chuỗi, thì chúng ta cần chuyển đổi nó thành đối tượng datetime. Để làm được điều đó, chúng ta có thể sử dụng datetime. hàm strptime[]. Trong khi đó, nếu dấu thời gian đã cho đã là một đối tượng ngày giờ, thì 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 giờ. Đối với điều đó, hãy chuyển đối số giờ 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. 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 giờ sau dấu thời gian đã cho
- Bước 4. Nếu bạn muốn dấu thời gian cuối cùng ở định dạng chuỗi, thì hãy chuyển đổi đối tượng datetime thành chuỗi bằng cách sử dụng strftime[]. Bạn có thể chuyển chuỗi định dạng làm đối số và nó sẽ chuyển đổi đối tượng ngày giờ thành một chuỗi có định dạng đã chỉ định
Hãy hiểu với một ví dụ,
Thêm 2 giờ vào dấu thời gian trong python
from datetime import datetime from datetime import timedelta # Given timestamp in string time_str = '24/7/2021 11:13:08.230010' 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 Time: ', given_time] n = 2 # Add 2 hours to datetime object final_time = given_time + timedelta[hours=n] print['Final Time [2 hours 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 Time: 2021-07-24 11:13:08.230010 Final Time [2 hours after given time ]: 2021-07-24 13:13:08.230010 Final Time as string object: 24/07/2021 13:13:08.230010
Chúng tôi đã thêm 2 giờ vào dấu thời gian '24/7/2021 11. 13. 08. 230010′ để thành ’24/07/2021 13. 13. 08. 230010′
Vì chúng tôi đã thêm một timedelta [có thời lượng 2 giờ] vào đối tượng datetime, nên nó trả về một đối tượng datetime mới trỏ đến dấu thời gian mới. Sau đó, chúng tôi đã chuyển đổi đối tượng datetime sang định dạng chuỗi được yêu cầu bằng cách sử dụng datetime. strftime[]. Nếu chuỗi dấu thời gian của bạn có định dạng khác, thì bạn có thể thay đổi định dạng theo đó trong khi sử dụng strptime[] & strftime[]
Thêm giờ 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 giờ vào một datetime. Hãy hiểu với một ví dụ,
Thêm 3 giờ vào ngày giờ trong python
from datetime import datetime import pandas as pd # Given timestamp in string time_str = '24/7/2021 11:13:08.230010' 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 Time: ', given_time] n = 3 # Add 3 hours to datetime object final_time = given_time + pd.DateOffset[hours=n] print['Final Time [3 hours 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 Time: 2021-07-24 11:13:08.230010 Final Time [3 hours after given time ]: 2021-07-24 14:13:08.230010 Final Time as string object: 24/07/2021 14:13:08.230010
Chúng tôi đã tạo một đối tượng DateOffset bằng cách chuyển đối số giờ là 3. Sau đó, chúng tôi đã thêm đối tượng DateOffset này vào đối tượng datetime. Nó trả về một đối tượng ngày giờ mới trỏ đến dấu thời gian mới tôi. e. sau 3 giờ kể từ dấu thời gian nhất định
Thêm giờ vào dấu thời gian đã cho trong python bằng relativedelta
Trong python, mô-đun dateutil cung cấp một lớp relativedelta, đại diện cho một khoảng thời gian. Lớp relativedelta 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 giờ 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 giờ 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 giờ vào dấu thời gian trong python
from datetime import datetime from dateutil.relativedelta import relativedelta # Given timestamp in string time_str = '24/7/2021 11:13:08.230010' 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 Time: ', given_time] n = 30 # Add 3 hours to datetime object final_time = given_time + relativedelta[hours=n] print['Final Time [30 hours 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 Time: 2021-07-24 11:13:08.230010 Final Time [30 hours after given time ]: 2021-07-25 17:13:08.230010 Final Time as string object: 25/07/2021 17:13:08.230010
Vì dấu thời gian đã cho ở dạng chuỗi, vì vậy trước tiên chúng tôi đã chuyển đổi nó thành đối tượng datetime. Sau đó, chúng tôi đã tạo một đối tượng relativedelta đại diện cho 30 giờ bằng cách chuyển đối số giờ là 30. Sau đó thêm nó vào đối tượng datetime. Nó trả về một đối tượng ngày giờ mới trỏ đến dấu thời gian mới tôi. e. ba mươi giờ sau dấu thời gian nhất định