我希望能够以python中的DD MMM YYYY
格式将当前日期四舍五入到最近(等于/等于)半年。
示例1:如果今天是10 Jul 2019
,我希望代码输出显示31 Dec 2019
。
示例2:如果今天是15 Jan 2019
,我希望输出为30 Jun 2019
。
我还希望月份是6月/ 12月(MMM),而不是06或12。
我已经导入了datetime包,但是不知道如何继续。我正在尝试使用round函数,但也不确定。
我的电子邮件地址有代码:请参阅截至DD MMM YYYY的半年要求。我希望自动填充DD MMM YYYY
答案 0 :(得分:0)
在此回复Python round up integer to next hundred的帮助下,您可以使用以下方式:
from datetime import datetime
from calendar import monthrange
def roundup(x, b=6):
return x if x % b == 0 else x + b - x % b
def get_nearest_halfyear(date_str):
d = datetime.strptime(date_str, '%d %b %Y')
m = roundup(d.month)
return datetime(year=d.year, month=m, day=monthrange(d.year, m)[-1] ).strftime('%d %b %Y')
for s in ['10 Jul 2019', '15 Jan 2019']:
print('Please refer to the requirements for the half year ending {}.'.format(get_nearest_halfyear(s)))
打印:
Please refer to the requirements for the half year ending 31 Dec 2019.
Please refer to the requirements for the half year ending 30 Jun 2019.
答案 1 :(得分:0)
您可以通过检查date.today().month//7 >0
来完成此操作。这样可以得出当日是一年中的哪半年,并相应地返回半年的最后一天。
from datetime import datetime,date
def get_nearest_halfyear(date_var):
return date(date_var.year, 12, 31).strftime("%d %b %Y") if date_var.month//7>0 else date(date_var.year, 6, 30).strftime("%d %b %Y")
print('Please refer to the requirements for the half year ending {}.'.format(get_nearest_halfyear(date.today())))
输出:请参阅截至2019年12月31日的半年的要求。