這篇文章給大家分享的是有關(guān)Python怎么計(jì)算指定日期是今年的第幾天的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
首先是輸入的問題,個(gè)人認(rèn)為分別輸入年月份是一件很初級(jí)的要求,就實(shí)現(xiàn)了形如“2020-3-26”的字符串解析的兩種方法,代碼如下:
def cal_date_str_spilt(date): '''' 處理形如"2020-3-26" 使用字符串的spilt方法解析 ''' _year = int(date.split('-')[0]) _month = int(date.split('-')[1]) _day = int(date.split('-')[2]) return [_year, _month, _day] def cal_date_str_time(date): ''' 使用time庫內(nèi)置函數(shù)strptime(string, format) return struct_time對(duì)象 傳入?yún)?shù):字符串 + 處理格式 ''' _date = time.strptime(date, '%Y-%m-%d') _year = _date.tm_year _month = _date.tm_mon _day = _date.tm_mday return [_year, _month, _day]
然后判斷是否閏年
def judge_leap_year(year, month): # 只有閏年且月份大于2月才加多一天 if year % 400 == 0 or year % 100 and year % 4 == 0 and month > 2: return 1 else: return 0
主函數(shù)
def main(): date = input("請(qǐng)輸入日期,以'-'分隔:") sum_1, sum_2 = 0, 0 date_list_1 = cal_date_str_spilt(date) date_list_2 = cal_date_str_time(date) month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] month_day_lep = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] sum_1 += sum(month_day[:date_list_1[1] - 1]) + date_list_1[2] + judge_leap_year(date_list_1[0], date_list_1[1]) sum_2 += sum(month_day[:date_list_2[1] - 1]) + date_list_2[2] + judge_leap_year(date_list_2[0], date_list_2[1]) print('今天是今年的第' + str(sum_1) + '天') print('今天是今年的第' + str(sum_2) + '天') ''' 這一段是使用了datetime庫的方法,python本身就有處理該類問題的方法 ''' _sum = datetime.date(date_list_1[0], date_list_1[1], date_list_1[2]) sum_3 = _sum.strftime('%j') if sum_3[0] == '0' and sum_3[1] == '0': print('今天是今年的第' + str(sum_3[-1:]) + '天') elif sum_3[0] == '0': print('今天是今年的第' + str(sum_3[-2:]) + '天') else: print('今天是今年的第' + str(sum_3) + '天') if __name__ == '__main__': main()
以下是全部代碼:
import datetime import time def cal_date_str_spilt(date): '''' 處理形如"2020-3-26" 使用字符串的spilt方法解析 ''' _year = int(date.split('-')[0]) _month = int(date.split('-')[1]) _day = int(date.split('-')[2]) return [_year, _month, _day] def cal_date_str_time(date): ''' 使用time庫內(nèi)置函數(shù)strptime(string, format) return struct_time對(duì)象 傳入?yún)?shù):字符串 + 處理格式 ''' _date = time.strptime(date, '%Y-%m-%d') _year = _date.tm_year _month = _date.tm_mon _day = _date.tm_mday return [_year, _month, _day] def judge_leap_year(year, month): # 只有閏年且月份大于2月才加多一天 if year % 400 == 0 or year % 100 and year % 4 == 0 and month > 2: return 1 else: return 0 def main(): date = input("請(qǐng)輸入日期,以'-'分隔:") sum_1, sum_2 = 0, 0 date_list_1 = cal_date_str_spilt(date) date_list_2 = cal_date_str_time(date) month_day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] month_day_lep = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] sum_1 += sum(month_day[:date_list_1[1] - 1]) + date_list_1[2] + judge_leap_year(date_list_1[0], date_list_1[1]) sum_2 += sum(month_day[:date_list_2[1] - 1]) + date_list_2[2] + judge_leap_year(date_list_2[0], date_list_2[1]) print('今天是今年的第' + str(sum_1) + '天') print('今天是今年的第' + str(sum_2) + '天') ''' 這一段是使用了datetime庫的方法,python本身就有處理該類問題的方法 ''' _sum = datetime.date(date_list_1[0], date_list_1[1], date_list_1[2]) sum_3 = _sum.strftime('%j') if sum_3[0] == '0' and sum_3[1] == '0': print('今天是今年的第' + str(sum_3[-1:]) + '天') elif sum_3[0] == '0': print('今天是今年的第' + str(sum_3[-2:]) + '天') else: print('今天是今年的第' + str(sum_3) + '天') if __name__ == '__main__': main()
感謝各位的閱讀!關(guān)于“Python怎么計(jì)算指定日期是今年的第幾天”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁名稱:Python怎么計(jì)算指定日期是今年的第幾天-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://www.rwnh.cn/article8/pdiip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容