我有一个日期作为整数,例如:import math
def solve():
x = -1000
while x < 1001:
if math.isclose((x**2 + 1), 4, rel_rol=1e-9):
print("x = " + str(x))
x += 0.0000000000001
solve()
我想有一种方法可以给出开始日期,并且它会返回下一个日期,在此示例中:201806目前,我有以下解决方案:
201805
这是解决这个问题的一种好方法还是有一种简单的更好的方法?
答案 0 :(得分:2)
使用relativedelta怎么办?
您的第一步将是安装软件包dateutil:
pip install dateutil
然后您将可以使用它:
import datetime
from dateutil.relativedelta import relativedelta
print(datetime.datetime.strptime(str(201805), "%Y%m") + relativedelta(months=1))
或字符串:
print((datetime.datetime.strptime(str(201805), "%Y%m") + relativedelta(months=1)).strftime("%Y%m"))
注意:relativedelta来自一个单独的名为“ dateutil”(here for the details)的软件包。显然,它包括添加月/天/年..而不创建自定义函数的好方法。
答案 1 :(得分:1)
您可以使用datetime.timedelta:
from datetime import datetime, timedelta
def incrementDate(startdate):
cur_date = datetime.strptime(str(startdate), '%Y%m')
next_date = cur_date + timedelta(days=32)
return datetime.strftime(next_date, '%Y%m')
print(incrementDate(201806)) # 201807
print(incrementDate(201812)) # 201901
答案 2 :(得分:1)
只是为了好玩,如果您输入的实际上是一个整数,代表4位数字的年份,再加上2位数字的月份,那么您就可以在不进行任何字符串或日期时间转换的情况下增加月份。
d = 201812
y, m = d // 100, d % 100
if m == 12:
y += 1
m = 1
else:
m +=1
d = y * 100 + m
print(d)
# 201806
答案 3 :(得分:0)
通过replace()
对象中的datetime
方法,您可以从datetime
对象中更新参数:
import datetime
today = datetime.datetime.now()
current_month = today.month
year = today.year
# Check for december
if current_month < 12:
next_month = current_month + 1
else:
next_month = 1
year += 1
today= today.replace(month = next_month, year = year )
要加入您的功能:
import datetime
def increment_date(startdate):
date = datetime.strptime(str(startdate), '%Y%m')
current_month = date .month
year = date .year
# Check for december
if current_month < 12:
next_month = current_month + 1
else:
next_month = 1
year += 1
return date .replace(month = next_month, year = year )