二参数日期函数

我有两个约会:'24 October 2017''4/7/2018'

如果两个日期相同,则返回True

如果两个日期不同,则返回False

这是我目前拥有的功能,但我无法弄清楚如何获取与各自编号关联的月份名称。

def date_func(a,b):
    y = a.split(" ")
    z = b.split("/")
    if y[1] + y[0] + y[2] == z[0] + z[1] + z[2]:
        return True
    else:
        return False

我尝试创建字典,但是不确定如何使用它。

month_dict = {'Month' : ['January','February','March','April','May','June','July','August','September','October','November','December'],'Number' : ['1','2','3','4','5','6','7','8','9','10','11','12']}
shandian200567 回答:二参数日期函数

使用datetime模块

from datetime import date

date_1 = datetime.strptime("4/7/2018","%d/%m/%Y")

date_2 = datetime.strptime("24 October 2017","%d %B %Y")

date_1 == date_2 # False

看看strptime/strftime

,

使用列表,然后使用list.index来获得位置会更有意义。但是由于列表的索引为0,所以我们需要添加一个以获取结果。

months = ['January','February','March','April','May','June','July','August','September','October','November','December']

print(months.index('October')+1)  # -> 10

请注意,list.index返回一个int,因此要将其与其他月份的值进行比较,您需要将其转换为字符串。

,

尽管datetime模块为日期和类似概念提供了一个不错的界面,但是我希望您出于练习本身的兴趣而对此感兴趣。

字典month_dict的结构有点奇怪。当前,它将一个大月份列表映射到另一个大整数列表。您想要的是每个月与其对应数字之间的映射。检查一下:

def date_func(a,b):
    y = a.split(" ")
    z = b.split("/")
    if month_dict[y[1]] + y[0] + y[2] == z[0] + z[1] + z[2]:
        return True
    else:
        return False
month_dict = {
    'January'  : '1','February' : '2','March'    : '3','April'    : '4','May'      : '5','June'     : '6','July'     : '7','August'   : '8','September': '9','October'  : '10','November' : '11','December' : '12',}


# Test
print(date_func('24 October 2017','4/7/2018'))    # False
print(date_func('24 October 2017','10/24/2017'))  # True

还请注意,字典中的“整数”用引号引起来,即它们是str而不是int,以便与其他{{1 }}。

关于错误的说明

虽然我相信以上内容可以满足您的要求,但让我指出一个错误: 您的字符串连接策略并不完美,这两个调用都返回了str

True

(在两种情况下均为date_func('1 November 2017','11/1/2017') date_func('11 January 2017','11/1/2017') )。解决方案是分别比较这三个整数中的每一个,最好先将它们放入容器中,以达到最佳效果。在下面,我选择了month_dict[y[1]] + y[0] == '111',因为我可以直接与list进行比较:

z
本文链接:https://www.f2er.com/3163742.html

大家都在问