用Python从数组中提取到2007-1-1到2007-12-31?

用Python从数组中提取到2007-1-1到2007-12-31?,python,arrays,extract,Python,Arrays,Extract,请看Python代码: base = ['2018-1-9', '2017-1-1', '2017-4-10', '2015-2-15', '2017-12-31', '2018-1-8', '2017-12-31', '2017-4-10', '2017-3-16'] for item in base: if item <= '2017-12-31': print(item) 我想打印2017年的所有日期: 2017-1-1 2017-4-10 2017-12-

请看Python代码:

base = ['2018-1-9', '2017-1-1', '2017-4-10', '2015-2-15', '2017-12-31', '2018-1-8', '2017-12-31', '2017-4-10', '2017-3-16']
for item in base:
    if item <= '2017-12-31':
        print(item)
我想打印2017年的所有日期:

2017-1-1
2017-4-10
2017-12-31
2017-12-31
2017-4-10
2017-3-16

“我的代码”中需要更改哪些内容?

您正在比较类型为
string
的对象,而不是
date
。您可以查看以了解如何比较日期。以及检查如何基于字符串创建日期/日期时间对象

请考虑下面的代码:

Python 2.7.13 (default, Nov 23 2017, 15:37:09) 
[GCC 6.3.0 20170406] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> date1 = "2018-1-9"
>>> date2 = "2017-1-1"
>>> # converting strings into dates
>>> date1 = datetime.datetime.strptime(date1, "%Y-%m-%d").date()
>>> date2 = datetime.datetime.strptime(date2, "%Y-%m-%d").date()
>>> date1 <= date2
False
>>> date2 <= date1
True
Python 2.7.13(默认,2017年11月23日,15:37:09)
[GCC 6.3.0 20170406]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入日期时间
>>>date1=“2018-1-9”
>>>date2=“2017-1-1”
>>>#将字符串转换为日期
>>>date1=datetime.datetime.strtime(date1,“%Y-%m-%d”).date()
>>>date2=datetime.datetime.strtime(date2,“%Y-%m-%d”).date()

>>>date1>>date2您应该将给定的字符串转换为日期对象,并检查该对象上的任意内容

我建议你使用图书馆的日期时间 你可以读到,也可以读一些

对于您的代码,它希望:

base = ['2018-1-9', '2017-1-1', '2017-4-10', '2015-2-15', '2017-12-31', '2018-1-8', '2017-12-31', '2017-4-10',
        '2017-3-16']
max_date = datetime.strptime('2017-12-31', '%Y-%m-%d')
min_date = datetime.strptime('2017-1-1', '%Y-%m-%d')
for item in base:
    d = datetime.strptime(item, '%Y-%m-%d')
    if d <= max_date and d >= min_date:
        print(item)

如果您想将日期作为字符串进行比较,请确保它们是按照YYYY-MM-DD(es.base=['2018-01-09','2017-01-01','2017-04-10','2015-02-15','2017-12-31','2018-01-08','2017-12-31','2017-04-10','2017-03-16')构建的。您还应该测试项目>=“2017-01-01”以便更好地尝试理解答案。这不是2015-2-15。你能做到我想要的结果吗?非常感谢。你想要什么?根据代码,您希望所有日期都在2018年之前。你还想设定一个条件,即2017年1月1日之后?从2007-1-1到2007-12-31都可以。好吧!非常感谢你!
base = ['2018-1-9', '2017-1-1', '2017-4-10', '2015-2-15', '2017-12-31', '2018-1-8', '2017-12-31', '2017-4-10',
        '2017-3-16']
max_date = datetime.strptime('2017-12-31', '%Y-%m-%d')
min_date = datetime.strptime('2017-1-1', '%Y-%m-%d')
for item in base:
    d = datetime.strptime(item, '%Y-%m-%d')
    if d <= max_date and d >= min_date:
        print(item)
2017-1-1
2017-4-10
2017-12-31
2017-12-31
2017-4-10
2017-3-16