我有以下格式的文件
Summary:meeting Description:None DateStart:20100629T110000 DateEnd:20100629T120000 Time:20100805T084547Z
Summary:meeting Description:None DateStart:20100630T090000 DateEnd:20100630T100000 Time:20100805T084547Z
我需要创建一个能够在给定的“日期”和“时间”检索“摘要”的函数。 例如,函数将有两个参数,日期和时间,它们不是日期时间格式。它需要检查函数参数中指定的日期和时间是否在文件中DateStart和DateEnd中的日期和时间之间。
我不确定如何从上面指定的格式[即20100629T110000]检索时间和日期。我试图使用以下内容
line_time = datetime.strptime(time, "%Y%D%MT%H%M%S")
,其中时间是“20100629T110000”,但是我遇到了很多错误,例如“datetime.datetime没有属性strptime”。
提前做好这个功能的正确方法。
.................... EDIT ................
这是我的错误
Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************
>>>
Traceback (most recent call last):
File "C:\Python24\returnCalendarstatus", line 24, in -toplevel-
status = calendarstatus()
File "C:\Python24\returnCalendarstatus", line 16, in calendarstatus
line_time = datetime.strptime(time, "%Y%m%dT%H%M%S")
AttributeError: type object 'datetime.datetime' has no attribute 'strptime'
>>>
这是我的代码
import os
import datetime
import time
from datetime import datetime
def calendarstatus():
g = open('calendaroutput.txt','r')
lines = g.readlines()
for line in lines:
line=line.strip()
info=line.split(";")
summary=info[1]
description=info[2]
time=info[5];
line_time = datetime.strptime(time, "%Y%m%dT%H%M%S")
return line_time.year
status = calendarstatus()
答案 0 :(得分:6)
请勿将the datetime
module与the datetime
Objects in the module混淆。
该模块没有strptime
函数,但Object确实有strptime
类方法:
>>> time = "20100629T110000"
>>> import datetime
>>> line_time = datetime.strptime(time, "%Y%m%dT%H%M%S")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'strptime'
>>> line_time = datetime.datetime.strptime(time, "%Y%m%dT%H%M%S")
>>> line_time
datetime.datetime(2010, 6, 29, 11, 0)
请注意我们第二次将该类引用为datetime.datetime
。
或者您可以只导入类:
>>> from datetime import datetime
>>> line_time = datetime.strptime(time, "%Y%m%dT%H%M%S")
>>> line_time
datetime.datetime(2010, 6, 29, 11, 0)
此外,我将format string从%Y%D%MT%H%M%S
更改为%Y%m%dT%H%M%S
,我认为这就是您想要的。
答案 1 :(得分:6)
您需要实际阅读适合您的Python版本的文档。请参阅docs for datetime中的strptime
注意事项:
2.5版中的新功能。
您正在使用2.4版。您需要使用该文档中提到的解决方法:
import time
import datetime
[...]
time_string = info[5]
line_time = datetime(*(time.strptime(time_string, "%Y%m%dT%H%M%S")[0:6]))