Continue在使用datetime的Python中不起作用
我正试图写一个程序来打印两个给定日期之间的所有周二,不包括劳动节和感恩节假期。但是,当我使用“继续跳转”时,它会打破循环Continue在使用datetime的Python中不起作用,python,datetime,jupyter-notebook,jupyter,Python,Datetime,Jupyter Notebook,Jupyter,我正试图写一个程序来打印两个给定日期之间的所有周二,不包括劳动节和感恩节假期。但是,当我使用“继续跳转”时,它会打破循环 import datetime def getDates(): StartDate = datetime.datetime(2020, 1, 1) EndDate = datetime.datetime(2020, 12, 31) LaborDay = datetime.datetime(2020, 9, 7) Thanksgivin
import datetime
def getDates():
StartDate = datetime.datetime(2020, 1, 1)
EndDate = datetime.datetime(2020, 12, 31)
LaborDay = datetime.datetime(2020, 9, 7)
Thanksgiving_Start = datetime.datetime(2020, 11, 23)
Thanksgiving_End = datetime.datetime(2020, 11, 28)
CurrentDate = StartDate
days = int((EndDate - StartDate).days)
print(StartDate.strftime("%Y-%m-%d"))
for NextDate in range(days):
NextDate = CurrentDate + datetime.timedelta(days=7)
if NextDate == LaborDay:
continue
if Thanksgiving_Start <= NextDate <= Thanksgiving_End:
continue
if NextDate > EndDate:
break
print(NextDate.strftime("%Y-%m-%d"))
CurrentDate = NextDate
getDates()
导入日期时间
def getDates():
StartDate=datetime.datetime(2020,1,1)
EndDate=datetime.datetime(2020,12,31)
劳动日=日期时间。日期时间(2020,9,7)
感恩节开始=datetime.datetime(2020,11,23)
感恩节结束=datetime.datetime(2020,11,28)
当前日期=开始日期
天数=整数((结束日期-开始日期).days)
打印(StartDate.strftime(“%Y-%m-%d”))
对于范围内的下一个日期(天):
NextDate=CurrentDate+datetime.timedelta(天数=7)
如果NextDate==劳动日:
持续
如果您使用print(),您可以看到continue正在正常工作
def getDates():
StartDate = datetime.datetime(2020, 1, 1)
EndDate = datetime.datetime(2020, 12, 31)
LaborDay = datetime.datetime(2020, 9, 7)
Thanksgiving_Start = datetime.datetime(2020, 11, 23)
Thanksgiving_End = datetime.datetime(2020, 11, 28)
CurrentDate = StartDate
days = int((EndDate - StartDate).days)
print(StartDate.strftime("%Y-%m-%d"))
for NextDate in range(days):
NextDate = CurrentDate + datetime.timedelta(days=7)
if NextDate == LaborDay:
#labor day is in day 7 from septemeber, this day is not multiple of seven
#starting from StartDate, so it is impossible that is going to evaluate
# to true
print("Continue is working first statement")
continue
if Thanksgiving_Start <= NextDate <= Thanksgiving_End:
print("Continue is working second statment")
continue
if NextDate > EndDate:
break
print(NextDate.strftime("%Y-%m-%d"))
CurrentDate = NextDate
getDates()
def getDates():
StartDate=datetime.datetime(2020,1,1)
EndDate=datetime.datetime(2020,12,31)
劳动日=日期时间。日期时间(2020,9,7)
感恩节开始=datetime.datetime(2020,11,23)
感恩节结束=datetime.datetime(2020,11,28)
当前日期=开始日期
天数=整数((结束日期-开始日期).days)
打印(StartDate.strftime(“%Y-%m-%d”))
对于范围内的下一个日期(天):
NextDate=CurrentDate+datetime.timedelta(天数=7)
如果NextDate==劳动日:
#劳动节是从9月开始的第7天,这一天不是7的倍数
#从StartDate开始,所以不可能对
#真实
打印(“继续是工作的第一条语句”)
持续
如果您开始问题是,一旦遇到第二种情况,您就不会设置CurrentDate
事实上,您混合了两种不同的方法来更改下一个日期。它由循环在该范围内设置,但随后立即设置为与CurrentDate
相关的值。挑一个,坚持下去;否则你肯定会陷入困惑
例如,您可以在这里更改For
查看while True
循环(或者更好:while NextData在继续或中断之前是否尝试过打印?只是为了确保在continue语句中而不是在break语句中中断循环?也许if语句就是源代码-试试这个:thankine\u Start@Yossi Levi:不,尾部比较确实有效。你可以在Pytho中使用0
)n、 没问题。