在Python中,我怎么能在以下日期之前确定的月份:日之前确定一个月 - Python的
t = datetime.date(2014, 01, 03)
这是这样,其结果必然是:
2013-12-03
在Python中,我怎么能在以下日期之前确定的月份:日之前确定一个月 - Python的
t = datetime.date(2014, 01, 03)
这是这样,其结果必然是:
2013-12-03
如果你想知道昨天日期:
from datetime import date, timedelta
date1 = date(2014, 1, 3)
date2 = date1 - timedelta(days=1)
print date2.strftime('%y, %m, %d')
如果你想知道之前的日期起计1月份:
from datetime import timedelta, date
def subtract_one_month(dt0):
dt1 = dt0.replace(days=1)
dt2 = dt1 - timedelta(days=1)
dt3 = dt2.replace(days=1)
return dt3
date1 = date(2014, 1, 3)
date2 = subtract_one_month(date1)
print date2.strftime('%y, %m, %d')
它发现前一天(*昨天*)。很难理解OP想要什么。我把它解释为:OP想要[前一个*月*](http://stackoverflow.com/a/29480880/4279)。无关:您的代码中存在名称为'datetime','date'的问题(修复导入,为变量使用不同的名称)。 – jfs
你可以做什么,而不是每个时间,年,月和日的度量单独的变量。然后,你可以使用一个if语句,当月份是1,年份回到1,月份设置为12时。最后,只需将这些数字插入括号中即可。
year = 2014
month = 1
day = 3
if month == 1:
year -= 1
month = 12
else:
month -= 1
t = date.datetime(year, month, date)
要查找以前相对于给定日期的月份:
#!/usr/bin/env python
from datetime import date, timedelta
t = date(2014, 1, 3)
print(t.replace(day=1) - timedelta(1)) # the last day of the previous month
# -> 2013-12-31
import dateutil.relativedelta
t - dateutil.relativedelta.relativedelta(months=1)
那么,什么是'datetime.date(2014,3,31)'预期的结果? –
你的例子减去一整年,而不是一个月。 –
@MarkRansom减去一个月,即一月,应该返回前一年的12月份 – NorthernStars