Hướng dẫn python get 2 months ago - python nhận được 2 tháng trước

Thành thật mà nói, tôi thấy làm việc với datetime là điều khó khăn nhất tôi phải thường xuyên làm và tôi mắc rất nhiều sai lầm, vì vậy tôi sẽ làm việc với điều này và cho thấy một số thất bại mà tôi thường xuyên gặp phải với nó. Đây đi.

Hai ràng buộc: 1) Ngày hai tháng trước, 2) Thứ Hai của tuần đó

Ngày hai tháng trước

Được rồi, vì vậy thư viện datetime của Python có một phương thức hữu ích gọi là replace, có vẻ như nó có thể giúp ích ở đây:

>>> import datetime
>>> now = datetime.date.today()
>>> today
datetime.date(2015, 4, 25)
>>> today.month
4
>>> two_months_ago = today.replace(month=today.month-2)
>>> two_months_ago
datetime.date(2015, 2, 25)
>>> two_months_ago.month
2

Nhưng chờ đã: Còn số âm thì sao? Điều đó sẽ không hoạt động:

>>> older = datetime.date(2015, 01, 01)
>>> older.replace(month=older.month-2)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: month must be in 1..12

Vì vậy, có hai giải pháp:

1) Tôi có thể xây dựng một phạm vi 1-12 chu kỳ về phía trước hoặc quay lại, hoặc

2) Để tìm hai tháng trước, tôi chỉ có thể thay thế phần

>>> older = datetime.date(2015, 01, 01)
>>> older.replace(month=older.month-2)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: month must be in 1..12
0 của ngày của mình bằng ngày
>>> older = datetime.date(2015, 01, 01)
>>> older.replace(month=older.month-2)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: month must be in 1..12
1 trong tháng và sau đó quay lại 1 ngày vào tháng trước và sau đó thay thế ngày đó trong tháng trước bằng ngày tôi muốn.

.

def previous_month(date):
    current_day = date.day
    first_day = date.replace(day=1)
    last_day_prev_month = first_day - datetime.timedelta(days=1)
    prev_month_day = last_day_prev_month.replace(day=current_day)
    return prev_month_day

>>> today = datetime.date.today()
>>> older = previous_month(today)
>>> older
datetime.date(2015, 3, 25)

Tuy nhiên, hãy nói rằng chúng ta đang gần gũi, và chúng ta cần bao gồm một số kiểm tra lỗi để đảm bảo ngày chúng ta muốn là một ngày hợp lệ trong tháng chúng ta gặp phải. Cuối cùng, vấn đề là "hai tháng trước" Có nghĩa là nhiều hơn chúng ta nghĩ nó có nghĩa là khi chúng ta nói to.

Tiếp theo, chúng ta sẽ có một vết nứt ở vấn đề số hai: làm thế nào để đến thứ Hai của tuần đó?

Chà, các đối tượng datetime có một phương pháp trong tuần, vì vậy phần này không quá khó và đây là một câu trả lời tốt đẹp về cách làm điều đó.

Phiên bản đơn giản là: Sử dụng sự khác biệt trong các số nguyên trong tuần để tìm ra bao nhiêu ngày để quay lại và làm điều đó bằng cách sử dụng

>>> older = datetime.date(2015, 01, 01)
>>> older.replace(month=older.month-2)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: month must be in 1..12
4.

Takeaway: Làm việc với datetime có thể khó khăn.

Pandas cung cấp một ngày học lớp, để lưu trữ thông tin thời lượng hoặc khoảng. 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 tháng kể từ ngày hiện tại.

Trừ 10 tháng kể từ ngày hiện tại trong Pythondatetime.today(). Now suppose we want to subtract N months from the current date and get the past date as string. Let’s see how to do that,

Trước tiên, chúng tôi tạo một đối tượng DateTime có chứa ngày và giờ địa phương ngày hôm nay. Sau đó, chúng tôi đã tạo một đối tượng DateOffset bằng cách chuyển các tháng là 10. Sau đó, chúng tôi đã trừ đối tượng ngày này từ đối tượng DateTime trỏ đến ngày hiện tại. Nó đã trả lại một đối tượng DateTime trỏ đến một ngày qua, tức là sau 10 tháng trước ngày hiện tại.

Chúng tôi đã tìm hiểu về các cách khác nhau để trừ tháng kể từ ngày hiện tại ở Python.dateutil module provides a class relativedelta, which represents an interval of time. The relativedelta class has following attributes which tells about the duration,

  • Trong artilce này, chúng tôi sẽ thảo luận về các cách khác nhau để trừ các tháng kể từ ngày hiện tại ở Python.
  • Trong Python, chúng ta có thể nhận được ngày địa phương và dấu thời gian hiện tại làm đối tượng DateTime bằng cách sử dụng DateTime.Today (). Bây giờ giả sử chúng tôi muốn trừ n tháng kể từ ngày hiện tại và nhận được ngày qua là chuỗi. Hãy để xem cách làm điều đó,
  • Trừ các tháng kể từ ngày hiện tại trong Python sử dụng Relativeselta
  • Trong Python, mô -đun DateUtil cung cấp một lớp tương đối, đại diện cho một khoảng thời gian. Lớp tương đối được
  • Năm
  • Tháng
  • Ngày

Giờ

Phút

Giây

Micro giây If the given date is in a string format, then we need to convert it to the datetime object. For that we can use the datetime.strptime() function. Whereas, if the given date is already a datetime object, then you can skip this step.
Step 2: Create an object of relativedelta, to represent an interval of N months. For that, pass the argument months with value N in the relativedelta constructor.
Step 3: Subtract the relativedelta object from the datetime object returned by datetime.today(). It will give us a datetime object pointing to a past date i.e. N months before the current date.
Step 4: If you want the final date in string format, then convert the datetime object to string using strftime(). You can pass the format string as argument and it will convert the datetime object to a string of the specified format.

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

Trừ 20 tháng kể từ ngày hiện tại trong Python

from datetime import datetime
from dateutil.relativedelta import relativedelta

current_date = datetime.today()
print('Current Date: ', current_date)

# Subtract 20 months from current date
n = 20
past_date = current_date - relativedelta(months=n)

print('Date - 20 months before current date: ', past_date)
print('Date - 20 months before current date: ', past_date.date())

# Convert datetime object to string in required format
date_format = '%m/%d/%Y'
past_date_str = past_date.strftime(date_format)
print('Date (as string) - 20 months before current date: ', past_date_str)

Đầu ra

Current Date:  2021-06-12 19:11:34.550567
Date - 20 months before current date:  2019-10-12 19:11:34.550567
Date - 20 months before current date:  2019-10-12
Date (as string) - 20 months before current date:  10/12/2019 

Vì ngày hôm nay là ngày 2021-06-12 và chúng tôi đã trừ 20 tháng kể từ đó, ngày cuối cùng trở thành 2019-10-12.

Khi chúng tôi trừ đi tương đối (thời lượng 20 tháng) từ đối tượng DateTime có chứa ngày hôm nay, do đó, nó đã trả về một đối tượng DateTime mới chỉ vào ngày qua, tức là 20 tháng trước ngày hôm nay. Vì đối tượng DateTime cũng có dấu thời gian, do đó nó cũng được in. Nếu bạn chỉ muốn ngày, thì bạn có thể lấy đối tượng ngày từ đối tượng DateTime bằng hàm Date (), giống như chúng tôi đã làm trong ví dụ trên. Cuối cùng, chúng tôi đã chuyển đổi đối tượng DateTime thành định dạng chuỗi cần thiết bằng cách sử dụng DateTime.strftime ().

Pandas cung cấp một ngày học lớp, để lưu trữ thông tin thời lượng hoặc khoảng. 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 tháng kể từ ngày hiện tại.DateOffset, to store the duration or interval information. It is mostly used to increment or decrement a timestamp. It can be used with datetime module to to subtract N months from the current date.

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

Trừ 10 tháng kể từ ngày hiện tại trong Python

from datetime import datetime
import pandas as pd

current_date = datetime.today()
print('Current Date: ', current_date)

# Subtract 10 months from current date
n = 10
past_date = current_date - pd.DateOffset(months=n)

print('Date - 10 months before current date: ', past_date)
print('Date - 10 months before current date: ', past_date.date())

# Convert datetime object to string in required format
date_format = '%m/%d/%Y'
past_date_str = past_date.strftime(date_format)
print('Date (as string) - 10 months before current date: ', past_date_str)

Đầu ra

Current Date:  2021-06-12 19:13:27.632267
Date - 10 months before current date:  2020-08-12 19:13:27.632267
Date - 10 months before current date:  2020-08-12
Date (as string) - 10 months before current date:  08/12/2020  

Vì ngày hôm nay là ngày 2021-06-12 và chúng tôi đã trừ 20 tháng kể từ đó, ngày cuối cùng trở thành 2019-10-12.

Summary:

Chúng tôi đã tìm hiểu về các cách khác nhau để trừ tháng kể từ ngày hiện tại ở Python.