Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Time - Fatal编程技术网

使用Python比较不同格式的日期和时间

使用Python比较不同格式的日期和时间,python,date,time,Python,Date,Time,我在一个文件中有以下格式的行 总结;会议;描述没有一个日期开始;20100629T110000;日期结束;20100629T120000;时间20100805T084547Z 我需要创建一个有两个输入的函数:时间和日期,格式如下时间:HH:MM,日期为mmddyyyy。(这些是字符串)。现在,函数需要读取此行,查看输入的日期和时间是否介于DateStart(20100629T11000)和DateEnd(20100629T120000)之间。由于输入和行中的日期和时间格式有两种格式,如何处理此问

我在一个文件中有以下格式的行

总结;会议;描述没有一个日期开始;20100629T110000;日期结束;20100629T120000;时间20100805T084547Z

我需要创建一个有两个输入的函数:时间和日期,格式如下时间:HH:MM,日期为mmddyyyy。(这些是字符串)。现在,函数需要读取此行,查看输入的日期和时间是否介于DateStart(20100629T11000)和DateEnd(20100629T120000)之间。由于输入和行中的日期和时间格式有两种格式,如何处理此问题?

您可以:


然后您可以比较(
要处理日期和时间,请使用Python的模块。该模块中的
datetime
类有一个从字符串读取日期时间的方法,名为。因此,您可以执行以下操作:

# read the file, so that:
strStart = "20100629T110000"
strEnd = "20100629T120000"
imTime = "HH:MM"
inDate = "mmddyyyy"

import datetime
dateStart = datetime.datetime.strptime( strStart, "%Y%m%dT%H%M%S" )
dateEnd = datetime.datetime.strptime( strEnd, "%Y%m%dT%H%M%S" )
dateIn = datetime.datetime.strptime( inDate + inTime, "%m%d%Y%H:%M" )

assert dateStart < dateIn < dateEnd
#读取文件,以便:
strStart=“20100629T110000”
strEnd=“20100629T120000”
imTime=“HH:MM”
inDate=“mmddyyyy”
导入日期时间
dateStart=datetime.datetime.strtime(strStart,“%Y%m%dT%H%m%S”)
dateEnd=datetime.datetime.strtime(强度,“%Y%m%dT%H%m%S”)
dateIn=datetime.datetime.StrTime(inDate+inTime,“%m%d%Y%H:%m”)
断言dateStart

注意:您可以使用来读取文件。

使用
datetime
模块中的
datetime
类。下面是一个函数,它可以执行您需要的操作,但您可能需要调整边界条件:

from datetime import datetime
def f(row, datestr, timestr):
    tmp = row.split(";")
    start = datetime.strptime(tmp[5], "%Y%m%dT%H%M%S")
    end = datetime.strptime(tmp[7], "%Y%m%dT%H%M%S")
    mytimestamp = datetime.strptime(datestr+timestr, "%d%m%Y%H:%M")
    if (start < mytimestamp and mytimestamp < end):
        print "inside"
    else:
        print "not inside"

>>> f("Summary;meeting;Description;None;DateStart;20100629T110000;DateEnd;20100629T120000;Time;20100805T084547Z", "29062010", "11:00")
not inside
>>> f("Summary;meeting;Description;None;DateStart;20100629T110000;DateEnd;20100629T120000;Time;20100805T084547Z", "29062010", "11:30")
inside
从日期时间导入日期时间
def f(行、日期字符串、时间字符串):
tmp=行分割(“;”)
start=datetime.strtime(tmp[5],%Y%m%dT%H%m%S)
end=datetime.strtime(tmp[7],%Y%m%dT%H%m%S)
mytimestamp=datetime.strTime(datestr+timestr,“%d%m%Y%H:%m”)
如果(开始<我的时间戳,我的时间戳<结束):
打印“内部”
其他:
打印“不在内部”
>>>f(“总结;会议;描述;无;日期开始;20100629T110000;日期结束;20100629T120000;时间;20100805T084547Z”,“29062010”,“11:00”)
不在里面
>>>f(“总结;会议;描述;无;日期开始;20100629T110000;日期结束;20100629T120000;时间;20100805T084547Z”,“29062010”,“11:30”)
在…内

您好,Kenny,您使用的是什么版本的Python。我使用的是2.4,我已经导入了所有必需的,但是在使用datetime.datetime.strptime时出现错误。@user:
datetime.strptime
从2.5开始就可以使用,如链接所示。您可以使用
time.strptime
但是API不太面向对象。为什么不升级到Python2.7?非常感谢,刚刚安装了2.7,让我的生活变得轻松多了!
from datetime import datetime
def f(row, datestr, timestr):
    tmp = row.split(";")
    start = datetime.strptime(tmp[5], "%Y%m%dT%H%M%S")
    end = datetime.strptime(tmp[7], "%Y%m%dT%H%M%S")
    mytimestamp = datetime.strptime(datestr+timestr, "%d%m%Y%H:%M")
    if (start < mytimestamp and mytimestamp < end):
        print "inside"
    else:
        print "not inside"

>>> f("Summary;meeting;Description;None;DateStart;20100629T110000;DateEnd;20100629T120000;Time;20100805T084547Z", "29062010", "11:00")
not inside
>>> f("Summary;meeting;Description;None;DateStart;20100629T110000;DateEnd;20100629T120000;Time;20100805T084547Z", "29062010", "11:30")
inside