python计算几周零几天_Python提前几天/几周/几个月

我一直在stackoverflow中寻找答案,但我没能用Python和Python的方式找到我想要的东西。在

我试着根据两次约会提前几天、几周或几个月。这是我创建的一个小脚本,它做了我想做的,但我很关心它。在import datetime

from dateutil.relativedelta import relativedelta

now = datetime.datetime.now()

days_ahead = datetime.datetime.now() + relativedelta(days=3)

weeks_ahead = datetime.datetime.now() + relativedelta(weeks=2)

month_ahead = datetime.datetime.now() + relativedelta(months=1)

months_ahead = datetime.datetime.now() + relativedelta(months=3)

def get_relative_date(dt):

ahead = (dt - now).days

if ahead < 7:

return "Due in " + str(ahead) + " days"

elif ahead < 31:

return "Due in " + str(ahead/7) + " weeks"

else:

return "Due in " + str(ahead/30) + " months"

print get_relative_date(days_ahead)

print get_relative_date(weeks_ahead)

print get_relative_date(month_ahead)

print get_relative_date(months_ahead)

结果如下:

^{pr2}$

尽管是一个很好的答案,但我的担忧与:我用的是ahead < 30,但用31天算几个月呢?这会不会造成一些开销,并在某个时刻出现错误?在

有没有更好的方法来获取这些信息?某种类型的库或内置函数,用于datetime或dateutil返回此信息?在

提前谢谢。如果问题得到了回答,请将我链接到帖子上,我会仔细阅读的。如果需要,我愿意提供更多信息。在

编辑

我在这里包括我的完整更新代码,任何人谁也需要这个功能在Python。它还处理负的日值和今天。在def relative_date(dt):

if dt is not None and len(dt) > 0:

now = datetime.now()

then = arrow.get(dt).naive

rd = relativedelta(then, now)

if rd.years or rd.months:

months = 12 * rd.years + rd.months

if months < 0:

if months == -1:

return "Due 1 month ago"

return "Due %i months ago" % -months

if months == 1:

return "Due in 1 month"

return "Due in %d months" % months

elif rd.days > 7 or rd.days < -7:

weeks = rd.days / 7

if weeks < 0:

if weeks == -1:

return "Due 1 week ago"

return "Due %i weeks ago" % -weeks

if weeks == 1:

return "Due in 1 week"

return "Due in %d weeks" % weeks

else:

if rd.days == 0:

return "Due Today"

elif rd.days < 0:

if rd.days == -1:

return "Due 1 day ago"

return "Due %i days ago" % -rd.days

elif rd.days == 1:

return "Due in 1 day"

return "Due in %d days" % rd.days

else:

return ""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值