欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用 Python 查找本月的最后一天的方法匯總

 更新時(shí)間:2023年05月08日 09:58:48   作者:跡憶客  
這篇文章主要介紹了使用 Python 查找本月的最后一天,在本文中,我們學(xué)習(xí)了使用 datetime 和 calendar 等內(nèi)置庫(kù)以及 arrow 和 pandas 等第三方庫(kù)在 Python 中查找月份最后一天的各種方法,需要的朋友可以參考下

記住每個(gè)月的最后一天并確定這一天可能具有挑戰(zhàn)性。 你有沒(méi)有想過(guò)應(yīng)該有一個(gè)計(jì)算機(jī)程序可以用幾行代碼向你顯示任何一年任何一個(gè)月的最后一天?

本文將教我們?nèi)绾蝿?chuàng)建 Python 程序,讓我們使用標(biāo)準(zhǔn) Python 庫(kù)輕松找到該月的最后一天。 我們將使用內(nèi)置庫(kù)(如 calendar 和 datetime)以及一些第三方庫(kù)(如 pandas 和 arrow)在 Python 中查找月份的最后一天。

使用 Python 中的日歷庫(kù)查找月份的最后一天

在本節(jié)中,我們將使用內(nèi)置的 Python 庫(kù)日歷來(lái)查找該月的最后一天。

該程序使用日歷子函數(shù) monthrange,它接受兩個(gè)參數(shù)參數(shù),年和月,并返回鍵值對(duì)值 (week_day_of_first_day, number_of_days)。

第一個(gè)值表示該月的第一個(gè)工作日(0 是星期一,6 是星期日),而第二個(gè)值表示該月的最后一天。

import calendar
last_day = calendar.monthrange(2000, 1)
print(last_day)

一月有 31 天,在 2000 年,第一天是星期六。

輸出:

讓我們通過(guò)提供一些閏年作為輸入來(lái)檢查程序,看看它是否在 Python 中正確找到了該月的最后一天。

import calendar
last_day1 = calendar.monthrange(2000, 2)
print(last_day1)
last_day2 = calendar.monthrange(2004, 2)
print(last_day2)

閏年將相應(yīng)顯示。

輸出:

使用 Python 中的 DateTime 模塊查找該月的最后一天

datetime 庫(kù)也是一個(gè)內(nèi)置庫(kù),用于在 Python 中查找該月的最后一天。

從每個(gè)月的第一天減去一天以找到該月的最后一天

當(dāng)月份和年份作為輸入提供時(shí),此程序會(huì)查找該月的最后一天。

import datetime
year = 2001
month = 2
v = datetime.date(year + int(month / 12), (month % 12) + 1, 1) - datetime.timedelta(days=1)
print(v)

讓我們分解一下代碼:

第一行導(dǎo)入日期時(shí)間庫(kù)。 創(chuàng)建了兩個(gè)變量,year 和 month,它們接受年和月的輸入。 子函數(shù) datetime.date() 將參數(shù)內(nèi)的三個(gè)值作為日期。

該程序使用的邏輯是,從該月的第一天返回前一天會(huì)將我們帶到上個(gè)月的最后一天。 這為我們提供了除 12 月以外所有月份的最后一天,這將我們帶到了前一年的最后一天。

該程序使用以下行將 1 加到 12 月的年份以解決此問(wèn)題:

datetime.date(year + int(month / 12)

類(lèi)似地,對(duì)于月份,如果是 12 月,程序會(huì)在月份 %12 的模數(shù)上加 1。

這會(huì)將月份設(shè)置為 1,其天數(shù)與 12 相同,但不會(huì)更改當(dāng)前年份。 最后,使用 datetime.timedelta(days=1) 函數(shù)從當(dāng)前日期中減去一天。

輸出:

使用 datetime 庫(kù)執(zhí)行此操作的另一種方法是創(chuàng)建一個(gè)方法并從中返回兩個(gè)值,一個(gè)用于 12 月,另一個(gè)用于其余月份。 讓我們檢查下面的程序。

import datetime
def last_day_of_month(date):
    if date.month == 12:
        return date.replace(day=31)
    return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)
print(last_day_of_month(datetime.date(2022, 10, 25)))

使用參數(shù)日期創(chuàng)建了一個(gè)方法 last_day_of_month。 在 if 語(yǔ)句中,使用 date.month == 12 檢查月份是否為十二月。

如果條件為真,日期將替換為 date.replace(day=31)。 否則,通過(guò)遞增 month=date.month + 1 將日期替換為第一天和下一個(gè)月,然后從中減去一天,使日期成為給定月份的最后一天。

下面給出一個(gè)例子:

return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)

最后,通過(guò)傳遞日期 datetime.date() 來(lái)調(diào)用該方法,然后將其打印出來(lái)。 它提供了比前面的示例更直接的解決方案。

輸出:

2022-10-31

使用存儲(chǔ)在數(shù)組中的預(yù)加載日期使用 for 循環(huán)查找該月的最后一天

另一個(gè)使用 datetime 庫(kù)的例子是創(chuàng)建一個(gè)包含該月最后幾天的數(shù)組,循環(huán)運(yùn)行它,然后讓 datetime 庫(kù)過(guò)濾掉無(wú)效的日期。

請(qǐng)參閱下面的示例代碼。

from datetime import datetime
def find_last_day(year, month):
    end_days = [31, 30, 29, 28, 27]
    for i in end_days:
        try:
            date = datetime(year, month, i)
        except ValueError:
            continue
        else:
            return date.date()
    return None
print(find_last_day(2020, 2))

該程序使用帶有兩個(gè)參數(shù)的方法 find_last_day(),年和月。 在數(shù)組 end_days 中,存儲(chǔ)了可能的最后幾天。

創(chuàng)建一個(gè) for 循環(huán),運(yùn)行 end_days 中的元素?cái)?shù)。 在 try 塊內(nèi),變量使用 datetime() 子函數(shù)存儲(chǔ)日期。

月和年的值根據(jù)參數(shù)設(shè)置,日值中存儲(chǔ)i。

在 except 塊內(nèi),給出了 ValueError 的條件,它丟棄變量 date 中的 i 值以獲得無(wú)效的月份值。 然后使用 continue 重新運(yùn)行循環(huán)。

如果找到有效值,該方法會(huì)在 else 塊中返回日期。 最后,使用 return None 使該方法不返回任何其他值。

該程序從給定的數(shù)組中搜索適當(dāng)?shù)娜掌谥怠?對(duì)于 December,循環(huán)找到 31 并返回值; 對(duì)于像 11 月這樣的月份,只有 30 是可能的,所以它會(huì)在那天返回。

同樣,2 月 31 日和 30 日也是不可能的,因此循環(huán)遍歷它們。 如果給定的年份是閏年,則循環(huán)返回 29; 否則,返回 28。

最后,通過(guò)傳遞二月份和 2020 年來(lái)調(diào)用該方法。

輸出:

2020-02-29

正如我們所見(jiàn),2020 年 2 月是閏年。

打印日歷年所有月份的最后一天以查找該月的最后一天

庫(kù) datetime 也可用于在 Python 中查找日歷年中所有月份的最后一天并將它們?nèi)看蛴〕鰜?lái)。 讓我們看一下程序。

import datetime
def month_end(date):
    next_month = date.replace(day=28) + datetime.timedelta(days=4)
    return next_month - datetime.timedelta(days=next_month.day)
for month in range(1, 13):
    print(month_end(datetime.date(2022, month, 1)))

讓我們分解一下代碼:

創(chuàng)建了一個(gè)帶有參數(shù)日期的方法 month_end。 在此方法中,變量 next_month 獲取日期并使用 date.replace(day=28) 將日期替換為 28,因?yàn)槊總€(gè)月最少有 28 天。

替換值后,將向該值添加 4 天以將日期移動(dòng)到下個(gè)月的第一天或第二天,具體取決于上個(gè)月的天數(shù)。

假設(shè)當(dāng)前日期是 2000, 3, 4,這個(gè)月的日期值是 4。從日期中減去這一天的值將得到上個(gè)月的最后一天 - 2000, 2, 28; 該程序中使用了此邏輯。

變量 next_month 中的日期從其自身中減去,并使用以下語(yǔ)法從方法中返回:

return next_month - datetime.timedelta(days=next_month.day)

我們創(chuàng)建了一個(gè) for 循環(huán),它使用實(shí)例月份在 (1,13) 的范圍內(nèi)運(yùn)行循環(huán)。 在循環(huán)內(nèi),方法 month_end 通過(guò)傳遞 datetime.date 來(lái)調(diào)用,為該方法提供年和日。

月份被替換為在 for 循環(huán)中使用的實(shí)例月份,以將 12 個(gè)月傳遞給該方法。

for month in range(1, 13):
    print(month_end(datetime.date(2022, month, 1)))

輸出:

2022-01-31
2022-02-28
2022-03-31
2022-04-30
2022-05-31
2022-06-30
2022-07-31
2022-08-31
2022-09-30
2022-10-31
2022-11-30
2022-12-31

輸出中顯示的是日歷年的所有最后幾天。

使用 Arrow 庫(kù)查找該月的最后一天

這是一個(gè)可用于日期操作的第三方 Python 庫(kù)。 它將用于在 Python 中查找該月的最后一天。

該程序使用 Arrow 子函數(shù) utcnow() 獲取當(dāng)前世界時(shí)。 它使用 ceil('month').date 查找月份的上限。

import arrow
print(arrow.utcnow().ceil('month').date())

輸出:

2022-10-31

該代碼給出了當(dāng)月的最后一個(gè)日期。

使用 Pandas 模塊查找本月的最后一天

本節(jié)使用第三方 Python 庫(kù) Pandas 來(lái)查找該月的最后一天。 在這里,程序?qū)肓藘蓚€(gè)庫(kù)包——datetime 和 pandas。

創(chuàng)建一個(gè)方法 check_month_end 接受一個(gè)參數(shù)日期。 此方法采用參數(shù) date 并使用 date + pd.offsets.MonthEnd(0) 添加該月的剩余天數(shù)。

下面是示例代碼:

from datetime import datetime
import pandas as pd
def check_month_end(date):
    return date + pd.offsets.MonthEnd(0)
print(check_month_end(datetime(2005, 2, 6)))
print(check_month_end(datetime(2004, 2, 29)))

輸出

2005-02-28 00:00:00
2004-02-29 00:00:00

輸出采用 Pandas 時(shí)間戳格式,并顯示該月的最后一天。

使用 Pandas 檢查某一天是否是該月的最后一天

Pandas 可用于檢查給定日期是否是該月的最后一天。 與之前的幾個(gè)程序不同,這個(gè)程序接受用戶輸入并檢查給定日期是否有效。

該程序使用參數(shù)值來(lái)檢查它是否匹配使用 date + pd.offsets.MonthEnd(0) == date 的月末。 該方法在被調(diào)用時(shí)返回布爾值。

請(qǐng)參閱提供的示例代碼。

from datetime import datetime
import pandas as pd
def check_month_end(date):
    return date + pd.offsets.MonthEnd(0) == date
print(check_month_end(datetime(1996, 5, 16)))
print(check_month_end(datetime(1996, 5, 31)))

輸出:

False
True

總結(jié)

在本文中,我們學(xué)習(xí)了使用 datetime 和 calendar 等內(nèi)置庫(kù)以及 arrow 和 pandas 等第三方庫(kù)在 Python 中查找月份最后一天的各種方法。

到此這篇關(guān)于使用 Python 查找本月的最后一天的文章就介紹到這了,更多相關(guān)Python本月的最后一天內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論