Использование datetime и манипулирование строками даты с использованием python - PullRequest
3 голосов
/ 10 августа 2010

У меня есть файл следующего формата

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».

Как правильно сделатьэта функция, спасибо заранее.

.................... РЕДАКТИРОВАТЬ ................

Вот моя ошибка

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 ]

6 голосов
/ 10 августа 2010

Вам необходимо прочитать документацию, соответствующую вашей версии Python.См. Примечание по 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]))
6 голосов
/ 10 августа 2010

Не путайте модуль datetime с datetime Объектами в модуле .

Модуль не имеет функции strptime, ноОбъект имеет метод класса 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)

Кроме того, я изменил вашу строку формата с %Y%D%MT%H%M%S на %Y%m%dT%H%M%S, что, я думаю, то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...