减去" n"格式列表中的天数[月,日]

时间:2018-01-13 19:08:03

标签: python python-3.x algorithm python-2.7

我在Python中有这个列表。

@Bean
public LocalValidatorFactoryBean localValidatorFactoryBean() {
    return new LocalValidatorFactoryBean();
}

@Bean
public ValidatingMongoEventListener validatingMongoEventListener(LocalValidatorFactoryBean lfb) {
    return new ValidatingMongoEventListener(lfb);
}

我想从此列表中减去值。例如,dates= [6,15],[8,24] [6,15],因此我想将[month,day]减去15。我希望得到10,之后这个操作会重复,我希望得到这样的[6,5]。我该怎么做这个代码?

2 个答案:

答案 0 :(得分:1)

您可能希望使用内置日期时间和第三方dateutil模块。请注意,您需要指定一年,因为有些年份有不同长度的月份(即闰年) - parse将假设当前年份:

import datetime.date as dt
from dateutil.parser import parse
from dateutil.relativedelta import relativedelta

print(parse('6/15') - relativedelta(days=10))

答案 1 :(得分:0)

您应该使用内置的datetime.datetimedatetime.timedelta对象以简化的方式实现此目标:

>>> from datetime import datetime, timedelta
>>> my_date_list = [6, 15]  # your current list in "[month, day]" format

# create `datetime` object using above values
# since you don't care about year, using 2018 for demonstration. But you need this.
>>> datetime_obj = datetime(month=my_date_list[0], day=my_date_list[1], year=2018)

# timedelta object for the number of days you want the diff
>>> diff = timedelta(days=20)

# New datetime object
>>> new_datetime_obj = datetime_obj - diff
>>> new_datetime_obj
datetime.datetime(2018, 5, 26, 0, 0)

# You desired format list of [month, day]
>>> [new_datetime_obj.month, new_datetime_obj.day]
[5, 26]

PS:您甚至不应该将您的初始和最终列表存储为" [月,日]"格式。只需存储datetime个对象列表,并在需要的地方使用它。 new_datetime_obj.month产生月份,new_datetime_obj.day产生当天

注意:您必须考虑代码中的年份。在计算和计算天数时有必要。例如,闰年和非闰年的2月计算得出不同的结果。