从python中的第周、月和日获取日期
Posted
技术标签:
【中文标题】从python中的第周、月和日获取日期【英文标题】:Get Date from week no, month, and day in python 【发布时间】:2019-08-06 05:31:30 【问题描述】:我有一个日期变量:
temp_date = '2019-03-15'
我使用日期时间计算了week no. of the month
和day
:
我得到了 week_no = 3 和 day = 'Friday'。
我想找出同一工作日组合的二月、一月和十二月的日期。
即:2 月、第 3 周、星期五的日期(Ans:2019-02-15)和
日期为 1 月,第 3 周,星期五(Ans:2019-01-18)。
日期为 12 月,第 3 周,周五(Ans: 2018-12-14)
我试过了:
feb= (current_date + timedelta(weeks=4)).strftime ('%d-%m-%Y')
jan= (current_date + timedelta(weeks=8)).strftime ('%d-%m-%Y')
dec= (current_date + timedelta(weeks=12)).strftime ('%d-%m-%Y')
我得到了正确的 1 月和 2 月日期,但 12 月我得到了 (2018-12-21)。
有更好的方法吗?
【问题讨论】:
这是您的实际代码吗?您正在添加timedelta
而不是减去它。如果您在 2019 年 12 月之后,则应增加 40 周而不是减去 12 周。
如果您期望 2018-12-14
弹出,那么您的前提是错误的。如果您想要每月的第三个星期五,那么 12 月 21 日就是这样。第二个是 12 月 14 日,第一个是 12 月 7 日,之前的星期五是 11 月 30 日。
@GreenCloakGuy 你是说 11 月 30 日吗?
@Selcuk ~你这个笨蛋,每个人都知道十一月不存在!~ *已修复
@GreenCloakGuy 我以为澳大利亚不存在,但我可能错了。
【参考方案1】:
这需要一段时间,使用 isoweek
和来自 calendar
的 monthrange
应该可以做到:
from isoweek import Week
import datetime
from calendar import monthrange
year = 2019
weekDay = 3
jan_date = Week(year, weekDay).friday()
Feb = monthrange(year, 2)[1] # 28 Days for 2nd month
Mar = monthrange(year, 3)[1] # 31 Days for 3rd month
Apr = monthrange(year, 4)[1] # 30 Days for 4th month
feb_date = jan_date + datetime.timedelta(days=Feb)
mar_date = feb_date + datetime.timedelta(days=Mar)
apr_date = mar_date + datetime.timedelta(days=Apr)
print(feb_date) # Feb 28 Days
print(mar_date) # Mar 31 Days
print(apr_date) # Apr 30 Days
输出:
2019-02-15
2019-03-18
2019-04-17
注意:这是迭代完成的,将月数从 以前的。
【讨论】:
以上是关于从python中的第周、月和日获取日期的主要内容,如果未能解决你的问题,请参考以下文章
无论如何要更改日期输入字段中年、月和日分隔符 (/) 的占位符样式?