python输出给定日期的第二天_Python:知道下个月的第二个星期三,给定日期

我想知道这个:

我有这样的日期:

2011-08-10 wednesday

我想知道下个月的下一个星期三:

答案应该是2011-09-14周三.

解决方法:

在评论中,有人解释说OP正在寻找一个映射函数

> 2011-08-25(第四个星期四)至2011-09-22(第四个星期四)

下个月)和

> 2011-08-30(第五个星期二)至2011-09-27(第四个星期二,

因为九月没有第五个星期二.)

import datetime

import dateutil.relativedelta as relativedelta

def next_month(date):

weekday=relativedelta.weekday(date.isoweekday()-1)

weeknum=(date.day-1)//7+1

weeknum=weeknum if weeknum<=4 else 4

next_date=date+relativedelta.relativedelta(

months=1,day=1,weekday=weekday(weeknum))

return next_date

start=datetime.date(2011,8,1)

for i in range(31):

date=start+datetime.timedelta(days=i)

next_date=next_month(date)

print('{d} --> {n}'.format(d=date,n=next_date))

产量

2011-08-01 --> 2011-09-05

2011-08-02 --> 2011-09-06

2011-08-03 --> 2011-09-07

2011-08-04 --> 2011-09-01

2011-08-05 --> 2011-09-02

2011-08-06 --> 2011-09-03

2011-08-07 --> 2011-09-04

2011-08-08 --> 2011-09-12

2011-08-09 --> 2011-09-13

2011-08-10 --> 2011-09-14

2011-08-11 --> 2011-09-08

2011-08-12 --> 2011-09-09

2011-08-13 --> 2011-09-10

2011-08-14 --> 2011-09-11

2011-08-15 --> 2011-09-19

2011-08-16 --> 2011-09-20

2011-08-17 --> 2011-09-21

2011-08-18 --> 2011-09-15

2011-08-19 --> 2011-09-16

2011-08-20 --> 2011-09-17

2011-08-21 --> 2011-09-18

2011-08-22 --> 2011-09-26

2011-08-23 --> 2011-09-27

2011-08-24 --> 2011-09-28

2011-08-25 --> 2011-09-22 # Oddly non-monotonic, but correct according to specifications

2011-08-26 --> 2011-09-23

2011-08-27 --> 2011-09-24

2011-08-28 --> 2011-09-25

2011-08-29 --> 2011-09-26 # 5th Monday maps to 4th Monday since there is no 5th Monday in September

2011-08-30 --> 2011-09-27

2011-08-31 --> 2011-09-28

标签:python,date,calendar

来源: https://codeday.me/bug/20190716/1482431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值