Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取两个日期之间的元素_Python_Date - Fatal编程技术网

Python 获取两个日期之间的元素

Python 获取两个日期之间的元素,python,date,Python,Date,生成的属性如下所示 ['2013-05-10T13:07:19.425602+01:00', 'seta', 'zone1', 'status=Info', 'id=2', 'MSG="New', 'Request', 'Arrival"','Reqno=103'] ['2013-05-10T13:07:19.586633+01:00', 'seta', 'zone1', 'status=Info', 'id=21', 'MSG="New', 'Request', 'Arrival"','Req

生成的属性如下所示

['2013-05-10T13:07:19.425602+01:00', 'seta', 'zone1', 'status=Info', 'id=2', 'MSG="New', 'Request', 'Arrival"','Reqno=103']
['2013-05-10T13:07:19.586633+01:00', 'seta', 'zone1', 'status=Info', 'id=21', 'MSG="New', 'Request', 'Arrival"','Reqno=1021']
['2013-05-20T13:07:21.842280+01:00', 'seta', 'zone1', 'status=Info', 'id=28', 'MSG="New', 'Request', 'Arrival"','Reqno=1028']
['2013-05-21T13:07:21.853704+01:00', setc', 'zone14', 'status=Info', 'id=29', 'MSG="New', 'Request', 'Arrival"','Reqno=1897']
['2013-05-21T13:07:19.425602+01:00', 'setc', 'zone14', 'status=Info', 'id=211', 'MSG="New', 'Request', 'Arrival"','Reqno=2020']
['2013-05-22T13:07:19.586633+01:00', 'setc', 'zone14', 'status=Info', 'id=212', 'MSG="New', 'Request', 'Arrival"','Reqno=2021']
['2013-05-22T13:07:21.842280+01:00', 'setc', 'zone14', 'status=Info', 'id=218', 'MSG="New', 'Request', 'Arrival"','Reqno=2023']
['2013-05-22T13:07:21.853704+01:00', seta', 'zone1', 'status=Info', 'id=291', 'MSG="New', 'Request', 'Arrival"','Reqno=2024']
我需要获取两个日期之间的属性,例如
2013-05-21 13:07:19
2013-05-22 13:07:19

for line in pass:
    if string.find(line, searchterm) != -1:
    attributes = line.split()   
        start = attributes[0]
    start = start[:-13] 
    start = strptime(start, '%Y-%m-%dT%H:%M:%S')
    #print start
    untill = start+timedelta(days=1)
    #print untill


    #delta = start - untill
    for i in attributes:
      month, day, year hours:minutes:seconds = i[0].split('-')
      r_date = date(year, month, day hours:minutes:seconds)
      if r_date >= start_date and r_date <= end_date:
         return attributes.append(i)
如何将开始和结束日期指定为usr输入

修改位:

startdate = raw_input("Enter start date as YYYY-MM-DD HH:MM:SS :") 
enddate = raw_input ("Enter end date as  YYYY-MM-DD HH:MM:SS :") 
            try: 
                   start = datetime.datetime.strptime(startdate, '%Y-%m-%d %H:%M:%S')  
            end = datetime.datetime.strptime(enddate, '%Y-%m-%d %H:%M:%S')

            except ValueError:
            print "Invalid date"                                


            for item in attributes:

           _date = datetime.datetime(time.strptime(item[0], '%Y-%m-%dT%H:%M:%S'))
        on compilation at this section it gives an error time data 2 doesnot match the format  '%Y-%m-%dT%H:%M:%S' why is considering only the first digit of the date ?

如果使用
datetime
对象,则更容易进行此检查

首先将开始和结束日期定义为
datetime
对象

start = datetime(2013, 5, 21, 13, 7, 19) 
end = datetime(2013, 5, 22, 13, 7, 19) 
假设您的数据在
my_value
列表中

my_values = [
    ['2013-05-10T13:07:19.425602+01:00', 'seta', 'zone1', 'status=Info', 'id=2', 'MSG="New', 'Request', 'Arrival"','Reqno=103']
    ['2013-05-10T13:07:19.586633+01:00', 'seta', 'zone1', 'status=Info', 'id=21', 'MSG="New', 'Request', 'Arrival"','Reqno=1021']
    ['2013-05-20T13:07:21.842280+01:00', 'seta', 'zone1', 'status=Info', 'id=28', 'MSG="New', 'Request', 'Arrival"','Reqno=1028']
    ['2013-05-21T13:07:21.853704+01:00', setc', 'zone14', 'status=Info', 'id=29', 'MSG="New', 'Request', 'Arrival"','Reqno=1897']
    ['2013-05-21T13:07:19.425602+01:00', 'setc', 'zone14', 'status=Info', 'id=211', 'MSG="New', 'Request', 'Arrival"','Reqno=2020']
    ['2013-05-22T13:07:19.586633+01:00', 'setc', 'zone14', 'status=Info', 'id=212', 'MSG="New', 'Request', 'Arrival"','Reqno=2021']
    ['2013-05-22T13:07:21.842280+01:00', 'setc', 'zone14', 'status=Info', 'id=218', 'MSG="New', 'Request', 'Arrival"','Reqno=2023']
    ['2013-05-22T13:07:21.853704+01:00', seta', 'zone1', 'status=Info', 'id=291', 'MSG="New', 'Request', 'Arrival"','Reqno=2024']
]
创建新列表:

my_selected_values = []
循环浏览当前列表并选择所需日期

for item in my_values:
    _date = datetime.strptime(item[0], '%Y-%m-%dT%H:%M:%S')  # parse datetime from string
    if start <= _date <= end:  # check if it is within your time interval
        my_selected_values.append([_date.strftime('%Y-%m-%d %H:%M:%S')] + item[1:])
或者,如果您愿意,您可以使用每个输入逐个获取datetime参数(年、月、日等),然后使用该参数创建datetime对象

_year = int(raw_input("Year"))
_month = int(raw_input("month"))
etc...
start = datetime(_year, _month, ...)

如果使用
datetime
对象,则更容易进行此检查

首先将开始和结束日期定义为
datetime
对象

start = datetime(2013, 5, 21, 13, 7, 19) 
end = datetime(2013, 5, 22, 13, 7, 19) 
假设您的数据在
my_value
列表中

my_values = [
    ['2013-05-10T13:07:19.425602+01:00', 'seta', 'zone1', 'status=Info', 'id=2', 'MSG="New', 'Request', 'Arrival"','Reqno=103']
    ['2013-05-10T13:07:19.586633+01:00', 'seta', 'zone1', 'status=Info', 'id=21', 'MSG="New', 'Request', 'Arrival"','Reqno=1021']
    ['2013-05-20T13:07:21.842280+01:00', 'seta', 'zone1', 'status=Info', 'id=28', 'MSG="New', 'Request', 'Arrival"','Reqno=1028']
    ['2013-05-21T13:07:21.853704+01:00', setc', 'zone14', 'status=Info', 'id=29', 'MSG="New', 'Request', 'Arrival"','Reqno=1897']
    ['2013-05-21T13:07:19.425602+01:00', 'setc', 'zone14', 'status=Info', 'id=211', 'MSG="New', 'Request', 'Arrival"','Reqno=2020']
    ['2013-05-22T13:07:19.586633+01:00', 'setc', 'zone14', 'status=Info', 'id=212', 'MSG="New', 'Request', 'Arrival"','Reqno=2021']
    ['2013-05-22T13:07:21.842280+01:00', 'setc', 'zone14', 'status=Info', 'id=218', 'MSG="New', 'Request', 'Arrival"','Reqno=2023']
    ['2013-05-22T13:07:21.853704+01:00', seta', 'zone1', 'status=Info', 'id=291', 'MSG="New', 'Request', 'Arrival"','Reqno=2024']
]
创建新列表:

my_selected_values = []
循环浏览当前列表并选择所需日期

for item in my_values:
    _date = datetime.strptime(item[0], '%Y-%m-%dT%H:%M:%S')  # parse datetime from string
    if start <= _date <= end:  # check if it is within your time interval
        my_selected_values.append([_date.strftime('%Y-%m-%d %H:%M:%S')] + item[1:])
或者,如果您愿意,您可以使用每个输入逐个获取datetime参数(年、月、日等),然后使用该参数创建datetime对象

_year = int(raw_input("Year"))
_month = int(raw_input("month"))
etc...
start = datetime(_year, _month, ...)

如果使用
datetime
对象,则更容易进行此检查

首先将开始和结束日期定义为
datetime
对象

start = datetime(2013, 5, 21, 13, 7, 19) 
end = datetime(2013, 5, 22, 13, 7, 19) 
假设您的数据在
my_value
列表中

my_values = [
    ['2013-05-10T13:07:19.425602+01:00', 'seta', 'zone1', 'status=Info', 'id=2', 'MSG="New', 'Request', 'Arrival"','Reqno=103']
    ['2013-05-10T13:07:19.586633+01:00', 'seta', 'zone1', 'status=Info', 'id=21', 'MSG="New', 'Request', 'Arrival"','Reqno=1021']
    ['2013-05-20T13:07:21.842280+01:00', 'seta', 'zone1', 'status=Info', 'id=28', 'MSG="New', 'Request', 'Arrival"','Reqno=1028']
    ['2013-05-21T13:07:21.853704+01:00', setc', 'zone14', 'status=Info', 'id=29', 'MSG="New', 'Request', 'Arrival"','Reqno=1897']
    ['2013-05-21T13:07:19.425602+01:00', 'setc', 'zone14', 'status=Info', 'id=211', 'MSG="New', 'Request', 'Arrival"','Reqno=2020']
    ['2013-05-22T13:07:19.586633+01:00', 'setc', 'zone14', 'status=Info', 'id=212', 'MSG="New', 'Request', 'Arrival"','Reqno=2021']
    ['2013-05-22T13:07:21.842280+01:00', 'setc', 'zone14', 'status=Info', 'id=218', 'MSG="New', 'Request', 'Arrival"','Reqno=2023']
    ['2013-05-22T13:07:21.853704+01:00', seta', 'zone1', 'status=Info', 'id=291', 'MSG="New', 'Request', 'Arrival"','Reqno=2024']
]
创建新列表:

my_selected_values = []
循环浏览当前列表并选择所需日期

for item in my_values:
    _date = datetime.strptime(item[0], '%Y-%m-%dT%H:%M:%S')  # parse datetime from string
    if start <= _date <= end:  # check if it is within your time interval
        my_selected_values.append([_date.strftime('%Y-%m-%d %H:%M:%S')] + item[1:])
或者,如果您愿意,您可以使用每个输入逐个获取datetime参数(年、月、日等),然后使用该参数创建datetime对象

_year = int(raw_input("Year"))
_month = int(raw_input("month"))
etc...
start = datetime(_year, _month, ...)

如果使用
datetime
对象,则更容易进行此检查

首先将开始和结束日期定义为
datetime
对象

start = datetime(2013, 5, 21, 13, 7, 19) 
end = datetime(2013, 5, 22, 13, 7, 19) 
假设您的数据在
my_value
列表中

my_values = [
    ['2013-05-10T13:07:19.425602+01:00', 'seta', 'zone1', 'status=Info', 'id=2', 'MSG="New', 'Request', 'Arrival"','Reqno=103']
    ['2013-05-10T13:07:19.586633+01:00', 'seta', 'zone1', 'status=Info', 'id=21', 'MSG="New', 'Request', 'Arrival"','Reqno=1021']
    ['2013-05-20T13:07:21.842280+01:00', 'seta', 'zone1', 'status=Info', 'id=28', 'MSG="New', 'Request', 'Arrival"','Reqno=1028']
    ['2013-05-21T13:07:21.853704+01:00', setc', 'zone14', 'status=Info', 'id=29', 'MSG="New', 'Request', 'Arrival"','Reqno=1897']
    ['2013-05-21T13:07:19.425602+01:00', 'setc', 'zone14', 'status=Info', 'id=211', 'MSG="New', 'Request', 'Arrival"','Reqno=2020']
    ['2013-05-22T13:07:19.586633+01:00', 'setc', 'zone14', 'status=Info', 'id=212', 'MSG="New', 'Request', 'Arrival"','Reqno=2021']
    ['2013-05-22T13:07:21.842280+01:00', 'setc', 'zone14', 'status=Info', 'id=218', 'MSG="New', 'Request', 'Arrival"','Reqno=2023']
    ['2013-05-22T13:07:21.853704+01:00', seta', 'zone1', 'status=Info', 'id=291', 'MSG="New', 'Request', 'Arrival"','Reqno=2024']
]
创建新列表:

my_selected_values = []
循环浏览当前列表并选择所需日期

for item in my_values:
    _date = datetime.strptime(item[0], '%Y-%m-%dT%H:%M:%S')  # parse datetime from string
    if start <= _date <= end:  # check if it is within your time interval
        my_selected_values.append([_date.strftime('%Y-%m-%d %H:%M:%S')] + item[1:])
或者,如果您愿意,您可以使用每个输入逐个获取datetime参数(年、月、日等),然后使用该参数创建datetime对象

_year = int(raw_input("Year"))
_month = int(raw_input("month"))
etc...
start = datetime(_year, _month, ...)

非常感谢。当我试图实现上面的Im时,会弹出strftime属性,有没有办法将start和end datetime对象指定为usr输入,比如start=datetime(年、月、日、时、分、秒)end=datetime(年、月、日、时、分、秒),strptime未找到错误Im使用python 2.7.6我尝试按上述方式修改代码,在下面的代码部分执行时,它给出了一个错误时间数据2与格式“%Y-%m-%dT%H:%m:%S”不匹配为什么只考虑日期的第一位数字_date=datetime.datetime(time.strtime(属性[0],“%Y-%m-%dT%H:%m:%S”))您可能忘记了使用
from datetime import datetime导入所需库。您可以从这里查看文档:我使用import datetime from datetime import datetime
time.strtime(属性[0]
?它是一个循环,循环变量名为
item
,它是每个列表中的日期时间字符串。非常感谢。有没有办法将开始和结束日期时间对象指定为usr输入,如开始=日期时间(年、月、日、小时、分钟、秒)结束=日期时间(年、月、日、小时、分钟、秒)当我试图实现上面用属性strftime弹出的Im时,strftime not found error Im使用python 2.7.6我试图修改上面的代码,在下面的代码部分执行时,它给出了一个错误时间数据2与格式“%Y-%m-%dT%H:%m:%S”不匹配为什么只考虑日期的第一位数字?\u date=datetime.datetime(time.strtime(属性[0],“%Y-%m-%dT%H:%m:%S”))您可能忘记了使用
从datetime导入datetime
导入
所需的库。您可以从此处查看文档:我已使用从datetime导入datetime导入datetime
time.strtime(属性[0]
?它是一个循环,循环变量名为
item
,它是每个列表中的日期时间字符串。非常感谢。有没有办法将开始和结束日期时间对象指定为usr输入,如开始=日期时间(年、月、日、小时、分钟、秒)结束=日期时间(年、月、日、小时、分钟、秒)当我试图实现上面用属性strftime弹出的Im时,strftime not found error Im使用python 2.7.6我试图修改上面的代码,在下面的代码部分执行时,它给出了一个错误时间数据2与格式“%Y-%m-%dT%H:%m:%S”不匹配为什么只考虑日期的第一位数字?\u date=datetime.datetime(time.strtime(属性[0],“%Y-%m-%dT%H:%m:%S”))您可能忘记了使用
从datetime导入datetime
导入
所需的库。您可以从此处查看文档:我已使用从datetime导入datetime导入datetime
time.strtime(属性[0]
?它是一个循环,循环变量名为
item
,它是每个列表中的日期时间字符串。非常感谢。有没有办法将开始和结束日期时间对象指定为usr输入,如开始=日期时间(年、月、日、小时、分钟、秒)结束=日期时间(年、月、日、小时、分钟、秒)当我试图实现上面用属性strftime弹出的Im时,strftime not found error Im使用python 2.7.6我试图修改上面的代码,在下面的代码部分执行时,它给出了一个错误时间数据2与格式“%Y-%m-%dT%H:%m:%S”不匹配为什么只考虑日期的第一位数字?\u date=datetime.datetime(time.strtime(属性[0],“%Y-%m-%dT%H:%m:%S”))您可能忘记了使用
从datetime导入datetime
导入
所需的库。您可以从此处查看文档:我已使用从datetime导入datetime导入datetime
time.strtime(属性[0]
?它是一个循环,循环变量名为
item
,它是每个列表中的日期时间字符串。