发布于2019-08-21 19:58 阅读(521) 评论(0) 点赞(18) 收藏(3)
这个问题在这里已有答案:
我需要增加日期时间值的月份
next_month = datetime.datetime(mydate.year, mydate.month+1, 1)
当月份是12时,它变为13并且引发错误“月必须在1..12”。(我预计这一年会增加)
我想使用timedelta,但它不需要一个月的论点。有relativedelta python包,但我不想只为此安装它。还有使用strtotime的解决方案。
time = strtotime(str(mydate));
next_month = date("Y-m-d", strtotime("+1 month", time));
我不想将datetime转换为str然后转换为time,然后转换为datetime; 因此,它仍然是一个图书馆
有没有人像使用timedelta一样有任何好的和简单的解决方案?
编辑 - 根据您对日期的评论,如果下个月的天数较少,则需要向下舍入,这是一个解决方案:
import datetime
import calendar
def add_months(sourcedate, months):
month = sourcedate.month - 1 + months
year = sourcedate.year + month // 12
month = month % 12 + 1
day = min(sourcedate.day, calendar.monthrange(year,month)[1])
return datetime.date(year, month, day)
正在使用:
>>> somedate = datetime.date.today()
>>> somedate
datetime.date(2010, 11, 9)
>>> add_months(somedate,1)
datetime.date(2010, 12, 9)
>>> add_months(somedate,23)
datetime.date(2012, 10, 9)
>>> otherdate = datetime.date(2010,10,31)
>>> add_months(otherdate,1)
datetime.date(2010, 11, 30)
此外,如果您不担心小时,分钟和秒钟,您可以使用date
而不是datetime
。如果您担心小时,分钟和秒钟,则需要修改我的代码以使用datetime
并从源到结果复制小时,分钟和秒。
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/51112/040e7aeb32298defeb8d/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!