在 Python 中输出未来 6 周的星期二?
Output the Tuesday 6 weeks in the future in Python?
更新:post 编辑以在 post
末尾添加答案
核心问题
使用Python,如何输出特定日期范围后 6 周后的星期二的日期?
上下文
我在一家 SaaS 公司工作,担任面向客户的职位。每当我为客户进行实施时,客户都会在我们初次互动后第 6 周的星期二收到一封调查电子邮件。
要知道哪个星期二特别好,我们目前必须参考一个图表,该图表显示如果互动在日期范围 x 内,则客户会在星期二 y 收到他们的调查邀请。
这方面的一个例子是:如果互动发生在 4 月 18 日至 4 月 22 日的某个时间,那么调查将在 5 月 31 日结束。
我更希望完成此操作而不必将日期范围及其相应的星期二硬编码到我的程序中(只是因为我很懒惰,不想随着时间的流逝手动更新日期),但如果必须如此,我愿意接受该解决方案。 :)
代码尝试
我可以使用 datetime 输出从今天开始 x 周后的特定日期,但我不确定如何从这里到达我想做的事情。
import time
from datetime import datetime, timedelta
time1 = (time.strftime("%m/%d/%Y")) #current date
time2 = ((datetime.now() + timedelta(weeks=6)).strftime('%m/%d/%Y')) #current date + six weeks
print(time1)
print((datetime.now() + timedelta(weeks=6)).strftime('%m/%d/%Y'))
免责声明:
我是初学者,虽然我在 posting 之前确实搜索过这个问题的答案,但我可能不知道使用正确的术语。如果这是一个重复的问题,我会很高兴能指出正确的方向。 :)
~~~更新的答案~~~
感谢@Mandias 让我走上正轨。我能够使用周数来达到我想要的结果。
from datetime import datetime, timedelta, date
today = date.today() #get today's date
todays_week = today.isocalendar()[1] #get the current week number based on today's date
survey_week = todays_week + 6 #add 6 weeks to the current week number
todays_year = int(today.strftime("%Y")) #get today's calendar year and turn it from a str to an int
survey_week_tuesday = date.fromisocalendar(todays_year, survey_week, 2) #(year, week, day of week) 2 is for Tuesday
print("Current Week Number:")
print(todays_week)
print("Current Week Number + 6 Weeks:")
print(todays_week + 6)
print("Today's Year:")
print(todays_year)
print("The Tuesday on the 6th week from the current week (i.e. survey tuesday):")
print(survey_week_tuesday.strftime('%m-%d-%Y')) #using strftime to format the survey date into MM-DD-YYYY format because that's what we use here even though DD-MM-YYYY makes more sense
我相信您正在寻找的内容显示在下面的示例代码中:
from datetime import datetime, timedelta
# Establish your date range
start = datetime.strptime("12-17-2010", "%m-%d-%Y")
end = datetime.strptime("1-05-2011", "%m-%d-%Y")
elapsed_days = (end-start).days
# Get each day in that range offset by 6 weeks
# You may need to adjust the elapsed_days value
offset = 6 #weeks
offset_days = [start+timedelta(weeks=offset, days=i) for i in range(elapsed_days)]
print(offset_days)
更新:post 编辑以在 post
末尾添加答案核心问题
使用Python,如何输出特定日期范围后 6 周后的星期二的日期?
上下文
我在一家 SaaS 公司工作,担任面向客户的职位。每当我为客户进行实施时,客户都会在我们初次互动后第 6 周的星期二收到一封调查电子邮件。
要知道哪个星期二特别好,我们目前必须参考一个图表,该图表显示如果互动在日期范围 x 内,则客户会在星期二 y 收到他们的调查邀请。
这方面的一个例子是:如果互动发生在 4 月 18 日至 4 月 22 日的某个时间,那么调查将在 5 月 31 日结束。
我更希望完成此操作而不必将日期范围及其相应的星期二硬编码到我的程序中(只是因为我很懒惰,不想随着时间的流逝手动更新日期),但如果必须如此,我愿意接受该解决方案。 :)
代码尝试
我可以使用 datetime 输出从今天开始 x 周后的特定日期,但我不确定如何从这里到达我想做的事情。
import time
from datetime import datetime, timedelta
time1 = (time.strftime("%m/%d/%Y")) #current date
time2 = ((datetime.now() + timedelta(weeks=6)).strftime('%m/%d/%Y')) #current date + six weeks
print(time1)
print((datetime.now() + timedelta(weeks=6)).strftime('%m/%d/%Y'))
免责声明: 我是初学者,虽然我在 posting 之前确实搜索过这个问题的答案,但我可能不知道使用正确的术语。如果这是一个重复的问题,我会很高兴能指出正确的方向。 :)
~~~更新的答案~~~
感谢@Mandias 让我走上正轨。我能够使用周数来达到我想要的结果。
from datetime import datetime, timedelta, date
today = date.today() #get today's date
todays_week = today.isocalendar()[1] #get the current week number based on today's date
survey_week = todays_week + 6 #add 6 weeks to the current week number
todays_year = int(today.strftime("%Y")) #get today's calendar year and turn it from a str to an int
survey_week_tuesday = date.fromisocalendar(todays_year, survey_week, 2) #(year, week, day of week) 2 is for Tuesday
print("Current Week Number:")
print(todays_week)
print("Current Week Number + 6 Weeks:")
print(todays_week + 6)
print("Today's Year:")
print(todays_year)
print("The Tuesday on the 6th week from the current week (i.e. survey tuesday):")
print(survey_week_tuesday.strftime('%m-%d-%Y')) #using strftime to format the survey date into MM-DD-YYYY format because that's what we use here even though DD-MM-YYYY makes more sense
我相信您正在寻找的内容显示在下面的示例代码中:
from datetime import datetime, timedelta
# Establish your date range
start = datetime.strptime("12-17-2010", "%m-%d-%Y")
end = datetime.strptime("1-05-2011", "%m-%d-%Y")
elapsed_days = (end-start).days
# Get each day in that range offset by 6 weeks
# You may need to adjust the elapsed_days value
offset = 6 #weeks
offset_days = [start+timedelta(weeks=offset, days=i) for i in range(elapsed_days)]
print(offset_days)