2014-02-03 2 views
-1

Итак, я попытался это сделать несколько раз; это была моя последняя попытка:Поиск разницы между временами в разных столбцах через файл CSV

import csv 
import collections 
import datetime 

print "Please type file name to open:" 
fileName = raw_input('> ') 
print "" 


incidents = collections.Counter() 
with open(fileName) as input_file: 
    for row in csv.reader(input_file, delimiter=','):  
     d0 = str(incidents[row[8]]) 
     d1 = str(incidents[row[7]]) 
     date0 = datetime.datetime.strptime(d0, "%Y/%m/%d %H:%M:%S").date() 
     date1 = datetime.datetime.strptime(d1, "%Y/%m/%d %H:%M:%S").date() 
     delta = (date0 - date1).days 
     print delta 

По существу, у меня есть файл CSV с двумя столбцами данных. Оба являются датами в этом формате: «1/21/2014 10:51 AM». Мне нужно уметь различать даты и преобразовывать их в десятичную.

Например, если столбец 1, строка 1 была «1/21/2014 10:51 AM» и столбец 2, строка 1 была «9/4/2012 2:56:29 AM». Тогда конечный результат должен быть «504,33».

Я могу опубликовать другие попытки/более подробно объяснение при необходимости.

+1

, что ваш вопрос? – njzk2

+0

Как найти разницу между двумя датами/временем, указанными выше, через файл CSV? – user3266742

+0

'% H \t Двузначное представление часа в 24-часовом формате должно быть, вероятно,'% l'. и вам нужно '% p', тоже – njzk2

ответ

0

Что касается с вами даты при условии, что один из этих двух форматов должен работать.

С секунд:

"%m/%d/%Y %I:%M:%S %p" 

Без секунд:

"%m/%d/%Y %I:%M %p" 

Подробнее о поведении формата strptime здесь: Datetime documentation

Это хорошо объясняется с образцами того, что он будет анализировать.


For instance if column 1, row 1 was "1/21/2014 10:51 AM" and column 2, row 1 was "9/4/2012 2:56:29 AM". Then the final output should be "504.33".

В соответствии с этим:

date0 = datetime.datetime.strptime(d0, "%m/%d/%Y %I:%M:%S %p") 
date1 = datetime.datetime.strptime(d1, "%m/%d/%Y %I:%M %p") 
delta = date0 - date1 
return delta.days + (delta.seconds/86400.0) # 60 seconds in 60 minutes in 24 hours 
0

Предоставленные ваши DateTime марки являются на самом деле соответствует (и не хватает секунды, как в вашем "1/21/2014 10:51 AM" образце), то вам необходимо использовать правильный формат для разбора метки:

date0 = datetime.datetime.strptime(d0, '%m/%d/%Y %I:%M:%S %p') 
date1 = datetime.datetime.strptime(d1, '%m/%d/%Y %I:%M:%S %p') 
delta = date0 - date1 
delta = delta.days + (delta.seconds/86400.0) # add day fraction 
print delta 
Смежные вопросы