Cách trừ ngày trong Python

nhập ngày giờ

# Thời gian khác biệt cho thời gian Thái Bình Dương

pacificTimeDelta    = ngày giờ. múi giờ(giờ=-8)

# Ví dụ: tạo múi giờ PST

tzPST        = ngày giờ. múi giờ (pacificTimeDelta, name="PST")

# tạo ngày giờ cho 1 giờ chiều PST - 31Dec2017 - Đối tượng nhận biết

OnePMyearEndPST = ngày giờ. ngày giờ(2017,12,31,1,0,0,0,tzPST)

# Thời gian chênh lệch cho giờ EST

nycTimeDelta    = ngày giờ. múi giờ(giờ=-8)

# Ví dụ: tạo múi giờ PST

tzEST           = ngày giờ. múi giờ (nycTimeDelta, name="EST")

# tạo ngày giờ cho 1 giờ chiều PST - 31Dec2017 - Đối tượng nhận biết

TwoPMyearEndEST = ngày giờ. ngày giờ(2017,12,31,2,0,0,0,kiểm tra)

in(HaiPMyearEndEST-OnePMyearEndPST)

Trong hướng dẫn tự động hóa Python ngày hôm nay, chúng tôi muốn chỉ ra cách bạn có thể dễ dàng trừ và tính chênh lệch thời gian bằng ngôn ngữ Python

Chúng tôi sẽ sử dụng mô-đun datetime để tính toán

  1. Sự khác biệt giữa hai ngày
  2. Sự khác biệt giữa một ngày và một đối tượng timedelta
  3. Trừ các timedelta khác khỏi các đối tượng ngày. năm, tháng, giờ, phút, giây

Trừ ngày từ một đối tượng datetime trong Python

Hãy xác định hai đối tượng ngày đại diện cho ngày tuyển dụng và nghỉ việc của một nhân viên ngẫu nhiên

import datetime
hire_date = datetime.date(2021,4, 7)
quit_date = datetime.date(2022,4, 24)

Sau đó, hãy tính tổng thời gian làm việc

print("The overall time that this employee worked in our company was:" + str(quit_date - hire_date).split(',')[0]+".")

Đây là kết quả

The overall time that this employee worked in our company was:382 days.

Trừ timedelta từ datetime

Bây giờ chúng ta sẽ xác định một datetime và timedelta đại diện cho ngày thuê và số ngày làm việc cho nhân viên hư cấu của chúng ta

import datetime
hire_date = datetime.date(2021,4, 7)
worked_days = datetime.timedelta(282)

Hãy tính nhanh ngày nghỉ việc của nhân viên này

print("The hire date of this employee worked in our company was: " + str(quit_date - worked_days)+".")

Đây là kết quả

The hire date of this employee worked in our company was: 2021-06-08.

Ghi chú. Một cách khác để thực hiện điều này là sử dụng dateutil. phương pháp tương đối

print(quit_date - relativedelta(days = 282))

Trừ năm từ datetime

ngày sử dụng. tiện ích relativedelta cho phép dễ dàng trừ thời gian khỏi một đối tượng ngày

from dateutil.relativedelta import relativedelta
graduation_date = quit_date - relativedelta(years = 2)

print("His graduation date was on: " + str(graduation_date))

Kết quả sẽ là

________số 8_______

Ghi chú. Đừng quên nhập tiện ích vào chương trình Python của bạn, nếu không bạn sẽ nhận được NameError sau

NameError: name 'relativedelta' is not defined

Trừ tháng từ ngày Python

Như chúng ta vừa học, chúng ta có thể sử dụng tiện ích relativedelta để tính toán sự khác biệt về thời gian so với dấu thời gian / ngày của Python

Giả sử chúng ta có một ngày ’21/1/2021′ và chúng ta muốn trừ N ngày cho ngày đó và N có thể là 1, 7, 300 hoặc bất kỳ số nào khác. Chúng tôi muốn ngày cuối cùng sau khi trừ đi N ngày kể từ ngày đã cho. Hãy xem làm thế nào để làm điều đó,

Trừ ngày từ một ngày trong Python bằng cách sử dụng timedelta và datetime

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ờ

Để trừ ngày từ một ngày nhất định, chúng ta sẽ sử dụng các lớp datetime và timedelta của mô-đun datetime của python

Các bước để trừ N ngày cho đến nay như sau,

  • Bước 1. Nếu ngày đã 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 ngày đã 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 ngày. Đối với điều đó, hãy chuyển đối số days với giá trị N trong hàm tạo timedelta
  • Bước 3. Trừ đối tượng timedelta khỏi đối tượng datetime. Nó sẽ cung cấp cho chúng ta một đối tượng datetime trỏ đến ngày tôi. e. N ngày trước ngày nhất định
  • Bước 4. Nếu bạn muốn ngày cuối cùng ở định dạng chuỗi, thì hãy chuyển đổi đối tượng ngày giờ 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ụ,

quảng cáo

Trừ 10 ngày kể từ một ngày trong python bằng timedelta

from datetime import datetime
from datetime import timedelta

given_date = '21/1/2021'
print('Given Date: ', given_date)

# Create datetime object from date string
date_format = '%d/%m/%Y'
dtObj = datetime.strptime(given_date, date_format)

# Subtract 10 days from a given datetime object
n = 10
past_date = dtObj - timedelta(days=n)

print('Past Date: ', past_date)
print('Past Date: ', past_date.date())

past_date_str = past_date.strftime(date_format)
print('Past Date as string object: ', past_date_str)

đầu ra

Given Date:  21/1/2021
Past Date:  2021-01-11 00:00:00
Past Date:  2021-01-11
Past Date as string object:  11/01/2021

Chúng tôi đã trừ đi 10 ngày trong ngày '21/1/2021′ để thành '01/11/2021′

Khi chúng tôi trừ timedelta (có thời hạn 10 ngày) khỏi đối tượng datetime, do đó, nó trả về một đối tượng datetime mới trỏ đến ngày mới. Vì đối tượng datetime cũng có dấu thời gian nên nó cũng được in. Nếu bạn chỉ muốn ngày, thì bạn có thể tìm nạp đối tượng ngày từ đối tượng datetime bằng hàm date(), giống như chúng ta đã làm trong ví dụ trên. Cuối cùng, 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()

Trừ ngày từ một ngày 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 để trừ N ngày từ một ngày

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

Trừ 100 ngày kể từ một ngày trong python

from datetime import datetime
import pandas as pd

given_date = '1/21/2021'
print('Given Date: ', given_date)

# Create datetime object from date string
date_format = '%m/%d/%Y'
dtObj = datetime.strptime(given_date, date_format)

# Subtract 100 days from a given datetime object
n = 100
past_date = dtObj - pd.DateOffset(days=n)

print('Past Date: ', past_date)
print('Past Date: ', past_date.date())

past_date_str = past_date.strftime(date_format)
print('Past Date as string object: ', past_date_str)

đầu ra

Given Date:  1/21/2021
Past Date:  2020-10-13 00:00:00        
Past Date:  2020-10-13
Past Date as string object:  10/13/2020

Chúng tôi đã tạo một đối tượng DateOffset bằng cách chuyển ngày thành 100. Sau đó, chúng tôi đã trừ đối tượng DateOffset này khỏi đối tượng datetime. Nó trả về một đối tượng datetime trỏ đến ngày tôi. e. trước 100 ngày kể từ ngày nhất định