Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找到与django约会后一个月的时间?_Python_Django_Datetime_Timedelta - Fatal编程技术网

Python 如何找到与django约会后一个月的时间?

Python 如何找到与django约会后一个月的时间?,python,django,datetime,timedelta,Python,Django,Datetime,Timedelta,我想找一个月后的约会,但我不知道怎么找 假设我有这个日期: 08.03.2012 我想在该日期后一个月自动查找,如: 08.04.2012 有人知道怎么做吗?正如Niklas评论的那样,由于月份的长度不同,从今天算起的一个月可能非常模糊 每个行业都有某种惯例;根据你的目标,结果可能会有所不同。例如,它将用于利息计算吗?是否会用于生成经常性账单 如果您希望从今天起30天: >>> import datetime >>> d1 = datetime.date.

我想找一个月后的约会,但我不知道怎么找

假设我有这个日期:

08.03.2012
我想在该日期后一个月自动查找,如:

08.04.2012

有人知道怎么做吗?

正如Niklas评论的那样,由于月份的长度不同,从今天算起的一个月可能非常模糊

每个行业都有某种惯例;根据你的目标,结果可能会有所不同。例如,它将用于利息计算吗?是否会用于生成经常性账单

如果您希望从今天起30天:

>>> import datetime
>>> d1 = datetime.date.today()
>>> d1
datetime.date(2012, 3, 8)
>>> d1 + datetime.timedelta(30)
datetime.date(2012, 4, 7)
如果月份有31天,则可能不是您想要的:

>>> d2 = datetime.date(2012, 1, 1)
>>> d2 + datetime.timedelta(30)
datetime.date(2012, 1, 31)
>>> import calendar
>>> calendar.monthrange(2012, 1)
(6, 31)
>>> d2 + datetime.timedelta(calendar.monthrange(d2.year, d2.month)[1])
datetime.date(2012, 2, 1)
然而,如果下个月的时间少于30天,则可能不是您预期的结果:

>>> d3 = datetime.date(2012, 1, 31)
>>> d3 + datetime.timedelta(calendar.monthrange(d3.year, d3.month)[1])
datetime.date(2012, 3, 2)
>>> import dateutil
>>> d3 + dateutil.relativedelta.relativedelta(months=1)
datetime.date(2012, 2, 29)

如果您使用的是datetime字段,则可以拉出月份并添加它,然后将其设置回原来的日期

例如:

d = datetime.date(2003, 7, 29)
d=d.month+1
当然,我仍然对日期时间是如何工作的感到困惑,如果您不是使用[“”]的分隔符,那么使用dateutil将是您的最佳选择:

>>> import datetime
>>> d1 = datetime.date.today()
>>> from dateutil.relativedelta import relativedelta
>>> d1 + relativedelta(months=1)
datetime.date(2012, 4, 8)

>>> d2 = datetime.date(year=2012,month=1,day=31)
>>> d2 + relativedelta(months=1)
datetime.date(2012, 2, 29)

在python中,如果您能解释1个月是+30天还是1个月是灵活的,我将不胜感激。有些月有31天,有些月有30天,2月有28天,所以我想知道django是否可以计算它automatically@Eren:这不是很清楚。例如,
31.1
之后的一个月是多少?@NiklasB。1月31日后的一个月将是2月的最后一天。请参阅paolo的解释。您还需要安装python dateutil才能使用它。@marltu,您是对的。在这里默认情况下随python Ubuntu安装一起安装。我不知道其他linux或windows发行版的情况。这在2014年1月12日这样的日期不起作用,这将是一年的最后一天。