使用日期时间和使用python操作日期字符串

时间:2010-08-10 09:22:58

标签: python datetime

我有以下格式的文件

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()

2 个答案:

答案 0 :(得分:6)

请勿将the datetime modulethe 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]))