python--時間段遍歷


創建函數:
def date_range(start_date,end_date):
    for n in range(int((end_date-start_date).days)):
        yield start_date+datetime.timedelta(n)

調用:

for i in date_range(start_date,end_date):

實例:寫一個程序,用戶輸入起始日期, 該程序可以計算后續的 120天中, 哪些是周 1, 周3, 周5, 周日。 並且把這些天打印出來。

import datetime
def date_range(start_date,end_date):
    for n in range(int((end_date-start_date).days)):
        yield start_date+datetime.timedelta(n)
dict1={'monday':[],'wednesday':[],'friday':[],'sunday':[]}
newday=input('輸入時間,年月日按‘-’分割:')
newday=datetime.datetime.strptime(newday,'%Y-%m-%d')
addday=datetime.timedelta(days=120)
n_day=newday+addday
for i in date_range(newday,n_day):
    if i.weekday()==0:
        dict1['monday'].append(datetime.datetime.strftime(i,'%Y%m%d'))
    if i.weekday()==2:
        dict1['wednesday'].append(datetime.datetime.strftime(i,'%Y%m%d'))
    if i.weekday()==4:
        dict1['friday'].append(datetime.datetime.strftime(i,'%Y%m%d'))
    if i.weekday() == 6:
        dict1['sunday'].append(datetime.datetime.strftime(i,'%Y%m%d'))
print(dict1)

strptime():由字符串格式轉化為日期格式的函數為: datetime.datetime.strptime()。我們輸入的日期和時間是字符串,要處理日期和時間,首先必須把str轉換為datetime。轉換方法是通過datetime.strptime()實現,需要一個日期和時間的格式化字符串:

>>>day = datetime.strptime(‘2019-5-1 5:54:45’, ‘%Y-%m-%d %H:%M:%S’)
>>>day
>>>datetime.datetime(2019, 5, 1, 5, 54, 45)
>>> print(day)
2019-05-01 05:54:45
>>> type(day)
<class ‘datetime.datetime’>

strftime():由日期格式轉化為字符串格式的函數為: datetime.datetime.strftime()。后台提取到datetime對象后,要把它格式化為字符串顯示給用戶,就需要轉換為str,轉換方法是通過strftime()實現的,同樣需要一個日期和時間的格式化字符串:

>>> s=datetime.strftime(datetime.now(), “%Y-%m-%d %H:%M”)
>>> s
‘2019-05-15 15:26’
>>> type(s)
<class ‘str’>
>>> print(s)
2019-05-15 15:26

datetime加減對日期和時間進行加減實際上就是把datetime往后或往前計算,得到新的datetime。加減可以直接用+和-運算符,不過需要導入timedelta這個類, 如以下例子:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2019, 5, 15, 15, 29, 17, 470262)
>>> now + timedelta(hours=8)
datetime.datetime(2019, 5, 15, 23, 29, 17, 470262)
>>> now - timedelta(days=2)
datetime.datetime(2019, 5, 13, 15, 29, 17, 470262)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2019, 5, 18, 3, 29, 17, 470262)
>>> now - timedelta(days=2.5)
datetime.datetime(2019, 5, 13, 3, 29, 17, 470262)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM