Làm cách nào để giảm một ngày so với ngày trong python?

Hôm nay chúng ta sẽ học cách trừ ngày trong Python. Ở đây chúng tôi sẽ cung cấp một số ví dụ để chúng ta có thể học phép trừ ngày từ một ngày trong Python

Vì vậy, trong hướng dẫn Python này, chúng ta sẽ học những điều sau

  • Trừ ngày từ một ngày cụ thể
  • Trừ ngày từ ngày hiện tại

Trừ ngày từ một ngày trong Python

Để trừ ngày từ một ngày, chúng tôi sẽ sử dụng mô-đun datetime

Từ mô-đun này, chúng tôi sẽ nhập các lớp sau

  1. ngày giờ
  2. múi giờ

from datetime import datetime, timedelta

Trừ ngày từ ngày hiện tại trong Python

Chương trình dưới đây sẽ trừ bất kỳ ngày cụ thể nào kể từ ngày hiện tại

from datetime import datetime, timedelta
current_date = datetime.now[]
new_date = current_date - timedelta[days=52]
print [new_date]

đầu ra

$ python codespeedy.py
2019-02-10 23:39:28.749808

Chúng ta cũng có thể sử dụng datetime. hôm nay [] thay vì datetime. now[] cả hai sẽ cung cấp cho bạn cùng một đầu ra

Cả hai sẽ trả về thời gian ngày hiện tại. [Ngày địa phương hoặc hệ thống]

đối tượng timedelta về cơ bản có thể được sử dụng để làm việc với thời gian. Nó giúp chúng ta biểu thị khoảng thời gian. Trong chương trình trên, bạn có thể thấy chúng tôi đã sử dụng timedelta[days=52] có nghĩa là nó sẽ biểu thị thời gian là ngày 52

current_date là một biến để lưu trữ ngày giờ hiện tại. Sử dụng toán tử “-”, chúng tôi đã trừ đi 52 ngày từ ngày_hiện_tại

Đối tượng timedelta từ mô-đun datetime cho phép bạn trừ bất kỳ số ngày nào khỏi đối tượng ngày tháng

Trong ví dụ này, tôi luôn lấy ngày hiện tại bằng phương thức date.today[]

Sau đó, tôi đặt timedelta trong 2 ngày và trừ đi từ current_date

from datetime import timedelta, date

current_date = date.today[]

print[current_date]

past_date = current_date - timedelta[days=2]

print[past_date]
2020-04-27
2020-05-25

Xem nội dung này

Bài viết này dựa trên Rivers Clothing và có các ví dụ về cách đặt và trừ một ngày x số ngày, VÀ, cách trừ một ngày khỏi một ngày khác

💬 câu hỏi. Làm thế nào chúng ta sẽ viết mã Python để trừ ngày từ một ngày?

Chúng ta có thể hoàn thành nhiệm vụ này bằng một trong các tùy chọn sau

  • Phương pháp 1. Sử dụng datetime.timedelta[]
  • Phương pháp 2. Sử dụng arrow
    $ pip install pandas
    0
  • Phương pháp 3. Sử dụng
    $ pip install pandas
    1
  • Phương pháp 4. Sử dụng
    $ pip install pandas
    2
  • Thưởng. Đọc CSV và trừ các cột ngày

Sự chuẩn bị

Trước khi bất kỳ thao tác dữ liệu nào có thể xảy ra, hai [2] thư viện mới sẽ yêu cầu cài đặt

  • Thư viện mũi tên dễ dàng truy xuất ngày và giờ
  • Thư viện Pandas cho phép truy cập vào/từ DataFrame

Để cài đặt các thư viện này, hãy điều hướng đến thiết bị đầu cuối IDE. Tại dấu nhắc lệnh [_______5_______3], hãy thực thi mã bên dưới. Đối với thiết bị đầu cuối được sử dụng trong ví dụ này, dấu nhắc lệnh là ký hiệu đô la [

$ pip install pandas
3]. Lời nhắc thiết bị đầu cuối của bạn có thể khác

$ pip install arrow

Nhấn phím

$ pip install pandas
5 trên bàn phím để bắt đầu quá trình cài đặt

$ pip install pandas

Nhấn phím

$ pip install pandas
5 trên bàn phím để bắt đầu quá trình cài đặt

Nếu quá trình cài đặt thành công, một thông báo sẽ hiển thị trong thiết bị đầu cuối cho biết điều tương tự

Vui lòng xem hướng dẫn cài đặt PyCharm để biết các thư viện cần thiết

  • Cách cài đặt Mũi tên trên PyCharm
  • Cách cài đặt Pandas trên PyCharm

Thêm đoạn mã sau vào đầu mỗi đoạn mã. Đoạn mã này sẽ cho phép mã trong bài viết này chạy không có lỗi

import datetime
from datetime import date
import arrow
import pandas as pd 

Phương pháp 1. sử dụng ngày giờ. múi giờ[]

Phương thức này lấy ngày hiện tại dưới dạng một chuỗi và chia nó thành một Danh sách. Sau đó, ngày hiện tại [

$ pip install pandas
7] được định cấu hình và mười [
$ pip install pandas
8] ngày được trừ đi [
$ pip install pandas
9] từ cùng một ngày để trả về một ngày mới

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]

Mã này làm như sau

  • Khai báo
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    0 truy xuất ngày hiện tại [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    1] và tách chuỗi ngày trên dấu gạch nối [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    2]. Điều này trả về ngày hiện tại dưới dạng Danh sách các chuỗi
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    3
  • Khai báo
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    4 gọi
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    5 và nhận ba [3] đối số nguyên. năm hiện tại [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    6], tháng hiện tại [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    7] và ngày, [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    8
  • Khai báo
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    9 sử dụng
    get_today  = str[date.today[]].split['-']
    std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
    chg_days   = datetime.timedelta[10]
    new_payday = std_payday - chg_days
    print[new_payday]
    0 và truyền vào một số nguyên, [
    get_today  = str[date.today[]].split['-']
    std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
    chg_days   = datetime.timedelta[10]
    new_payday = std_payday - chg_days
    print[new_payday]
    1 là số ngày cần trừ đi ngày ban đầu [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    8
  • Khai báo
    get_today  = str[date.today[]].split['-']
    std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
    chg_days   = datetime.timedelta[10]
    new_payday = std_payday - chg_days
    print[new_payday]
    3 và trừ đi
    $ pip install pandas
    7 từ
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    9

Cuối cùng, nội dung của

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]
3 được gửi đến thiết bị đầu cuối

đầu ra

Bảng lương của Rivers Clothing cho tháng hiện tại được đặt thành ngày tiếp theo

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]
7

Phương pháp 2. Sử dụng mũi tên và shift[]

Phương pháp này sử dụng thư viện arrow, để lấy ngày hiện tại [

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]
9]. Sau đó,
$ pip install pandas
0 được áp dụng tương tự để trừ đi số ngày kể từ ngày hiện tại, dẫn đến một ngày mới

get_today  = arrow.utcnow[]
new_payday = get_today.shift[days=-3]
print[str[new_payday][:10]]

Mã này làm như sau

  • Khai báo
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    0 truy xuất ngày hiện tại [
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    1] và trả về một đối tượng ngày tháng
  • Khai báo
    get_today  = str[date.today[]].split['-']
    std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
    chg_days   = datetime.timedelta[10]
    new_payday = std_payday - chg_days
    print[new_payday]
    3 áp dụng từ
    $ pip install pandas
    0 đến
    import datetime
    from datetime import date
    import arrow
    import pandas as pd 
    0 và chuyển số ngày để trừ [
    get_today  = arrow.utcnow[]
    new_payday = get_today.shift[days=-3]
    print[str[new_payday][:10]]
    6]

Cuối cùng, đầu ra được gửi đến thiết bị đầu cuối

Hướng dẫn cơ bản để cắt lát trong Python


Xem video này trên YouTube

Đầu ra 1

Nếu

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]
3 được xuất ra thiết bị đầu cuối mà không chuyển đổi nó thành chuỗi và áp dụng cắt, sau đây sẽ là đầu ra

get_today  = arrow.utcnow[]
new_payday = get_today.shift[days=-3]
print[str[new_payday][:10]]
8

Đầu ra 2

Nếu

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]
3 được chuyển đổi thành kiểu dữ liệu chuỗi và áp dụng phép cắt, thì kết quả sau đây sẽ là kết quả

from datetime import datetime

cur_date   = '2022-05-27'
date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
new_payday = date_obj - pd.DateOffset[days=3]
print[str[new_payday][:10]]
0

Phương pháp 3. Sử dụng Pandas DateOffset[]

Trong phương thức này,

from datetime import datetime

cur_date   = '2022-05-27'
date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
new_payday = date_obj - pd.DateOffset[days=3]
print[str[new_payday][:10]]
1 được gọi và tạo một đối tượng ngày tháng. Đối tượng ngày này được sửa đổi bằng cách chỉ ra số ngày cần trừ [_______49_______2] khỏi ngày ban đầu để trả về ngày mới

from datetime import datetime

cur_date   = '2022-05-27'
date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
new_payday = date_obj - pd.DateOffset[days=3]
print[str[new_payday][:10]]

💡Lưu ý. Ngoài các thư viện bắt buộc đã đề cập trong phần Chuẩn bị, phương pháp này cần thêm một mục từ thư viện datetime được nhập như sau.

from datetime import datetime

cur_date   = '2022-05-27'
date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
new_payday = date_obj - pd.DateOffset[days=3]
print[str[new_payday][:10]]
3

Mã này sau đó thực hiện như sau

  • Khai báo
    from datetime import datetime
    
    cur_date   = '2022-05-27'
    date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
    new_payday = date_obj - pd.DateOffset[days=3]
    print[str[new_payday][:10]]
    4 và gán cho nó một chuỗi Ngày
  • Tiếp theo,
    from datetime import datetime
    
    cur_date   = '2022-05-27'
    date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
    new_payday = date_obj - pd.DateOffset[days=3]
    print[str[new_payday][:10]]
    4 gọi
    from datetime import datetime
    
    cur_date   = '2022-05-27'
    date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
    new_payday = date_obj - pd.DateOffset[days=3]
    print[str[new_payday][:10]]
    6 nhận hai [2] đối số. một chuỗi ngày và trả về một đối tượng ngày
  • Sau đó, ba [3] ngày được trừ vào
    from datetime import datetime
    
    cur_date   = '2022-05-27'
    date_obj   = datetime.strptime[cur_date, '%Y-%m-%d']
    new_payday = date_obj - pd.DateOffset[days=3]
    print[str[new_payday][:10]]
    4 và được lưu vào
    get_today  = str[date.today[]].split['-']
    std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
    chg_days   = datetime.timedelta[10]
    new_payday = std_payday - chg_days
    print[new_payday]
    3

Cuối cùng, đầu ra được gửi đến thiết bị đầu cuối

Đầu ra 1

Nếu

get_today  = str[date.today[]].split['-']
std_payday = datetime.date[int[get_today[0]], int[get_today[1]], 25]
chg_days   = datetime.timedelta[10]
new_payday = std_payday - chg_days
print[new_payday]
3 được xuất ra thiết bị đầu cuối mà không chuyển đổi nó thành chuỗi và áp dụng cắt, sau đây sẽ là đầu ra

df = pd.DataFrame[columns=['hired', 'fired']]

df.hired = ['2020-01-24', '2022-01-27']
df.fired = ['2021-01-13', '2022-04-29']

df.hired = pd.to_datetime[df.hired]
df.fired = pd.to_datetime[df.fired]

diff     = [df.fired - df.hired]
print[diff]
0

Đầu ra 2

Nếu ________18_______3 được chuyển đổi thành kiểu dữ liệu chuỗi và áp dụng phép cắt, thì kết quả sau đây sẽ là

df = pd.DataFrame[columns=['hired', 'fired']]

df.hired = ['2020-01-24', '2022-01-27']
df.fired = ['2021-01-13', '2022-04-29']

df.hired = pd.to_datetime[df.hired]
df.fired = pd.to_datetime[df.fired]

diff     = [df.fired - df.hired]
print[diff]
2

Phương pháp 4. Sử dụng Pandas để trừ các cột ngày

Nếu bạn không muốn đặt ngày mới mà muốn tìm sự khác biệt giữa ngày này với ngày khác thì sao?

df = pd.DataFrame[columns=['hired', 'fired']]

df.hired = ['2020-01-24', '2022-01-27']
df.fired = ['2021-01-13', '2022-04-29']

df.hired = pd.to_datetime[df.hired]
df.fired = pd.to_datetime[df.fired]

diff     = [df.fired - df.hired]
print[diff]

Mã này làm như sau

  • Đầu tiên, một DataFrame được tạo có chứa hai [2] cột.
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    3 và
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    4. Kết quả lưu vào
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    5
  • Hai [2] dòng sau đây thêm hai [2] hàng vào DataFrame
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    5 và lưu vào biến thích hợp [
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    7 hoặc
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    8]
  • Sau đó, hai [2] dòng này được chuyển đổi thành đối tượng Datetime và được lưu vào biến thích hợp được đề cập ở trên
  • Hai [2] ngày được trừ và lưu vào
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    9

Cuối cùng, đầu ra được gửi đến thiết bị đầu cuối

10 phút để gấu trúc trong 5 phút [Được rồi 8]


Xem video này trên YouTube

đầu ra

0355 ngày192 ngàydtype. timedelta64[ns]

Thưởng. Đọc CSV và trừ các cột ngày

Nếu bạn không muốn đặt ngày mới mà muốn tìm sự khác biệt giữa ngày này với ngày khác thì sao?

df = pd.read_csv['dates.csv', usecols=['hired', 'fired'], header=0]

df['hired'] = pd.to_datetime[df['hired'], errors='coerce']
df['fired'] = pd.to_datetime[df['fired'], errors='coerce']
df['diff'] = df['fired'] - df['hired']
print[df]

Mã này làm như sau

  • Đọc trong tệp CSV nhỏ chứa hai [2] hàng. Mỗi hàng có ngày thuê và ngày sa thải và lưu vào df
  • Hai [2] dòng sau đây chuyển đổi các cột DataFrame
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    3 và
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    4 thành một đối tượng Ngày và lưu vào cùng một
  • Tiếp theo, một cột khác biệt mới được thêm vào và chứa số ngày giữa ngày
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    4 và ngày
    df = pd.DataFrame[columns=['hired', 'fired']]
    
    df.hired = ['2020-01-24', '2022-01-27']
    df.fired = ['2021-01-13', '2022-04-29']
    
    df.hired = pd.to_datetime[df.hired]
    df.fired = pd.to_datetime[df.fired]
    
    diff     = [df.fired - df.hired]
    print[diff]
    3

Cuối cùng, đầu ra được gửi đến thiết bị đầu cuối

đã thuêfireddiff02021-10-262022-12-25425 ngày12021-11-112022-03-31140 ngày

Tóm lược

Năm [5] phương pháp trừ ngày này sẽ cung cấp cho bạn đủ thông tin để chọn phương pháp tốt nhất cho các yêu cầu viết mã của bạn

Chủ Đề