程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何在不使用库[copy]的情况下在python中按自定义月份增加日期时间

发布于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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)