2017-06-27 273 views
2

我在csv文件中有两个日期9:20:00 AM和4:09:21 PM,我需要在python中读取它们。我如何找到这两个日期之间的时间?Python中计算excel日期的函数

+0

给出一个CSV片段。是两行或一行逗号等时间... – kabanus

回答

0

在python中有各种阅读CSV的方法。我建议你看看官方的Python csv库和pandas及其易于使用的read_csv函数。

至于找出时间差,你将不得不解析字符串,找到这样的区别:

from dateutil.parser import parse 
a = "9:20:00 AM" 
b = "4:09:21 PM" 
a_obj = parse(a) 
b_obj = parse(b) 
time_diff = b_obj - a_obj 
print time_diff.total_seconds() 
0

您可以使用csv包python的读取和写入的CSV文件..

例如..

import csv 
with open('eggs.csv', 'rb') as csvfile: 
spamreader = csv.reader(csvfile) 
for row in spamreader: 
    #Your Logic 

使用包读出的两个日期。这可能是字符串,并将其转换为python日期对象,然后查找两个日期之间的时间。

a = first_date 
b = second_date 
c = b - a 
divmod(c.days * 86400 + c.seconds, 60) 
0

您会对datetime模块感兴趣。 在您的翻译中试试。

>>> from datetime import datetime 
>>> a = datetime.strptime('9:20:00 AM','%I:%M:%S %p') 
>>> a 
datetime.datetime(1900, 1, 1, 9, 20) 
>>> b = datetime.strptime('4:09:21 PM','%I:%M:%S %p') 
>>> b 
datetime.datetime(1900, 1, 1, 16, 9, 21) 
>>> c= b-a 
>>> c 
datetime.timedelta(0, 24561) 

所以你'上午09时20分00秒'被转换成一个DateTime对象。其他时间也是如此。

注:'%I:%M:%S%P'这是你告诉strptime将字符串转换成DateTime对象的格式。在对日期时间对象执行操作后,您将获得一个timedelta对象。

datetime.timedelta(0, 24561) 

您可以从中获得合适的days,seconds。但是你不能得到hours,minutes的,你必须进行简单的数学

这里是你的代码,

import datetime 


def days_hours_minutes(td): 
    return td.days, td.seconds//3600, (td.seconds//60)%60 

a = datetime.datetime.strptime('9:20:00 AM','%I:%M:%S %p') 
b = datetime.datetime.strptime('4:09:21 PM','%I:%M:%S %p') 
c = datetime.timedelta(0, 24561) 

days,hours,minutes = days_hours_minutes(c) 
print("{0}:Days,{1}:Hours,{2}:Minutes".format(days,hours,minutes)) 

输出:

0:Days,6:Hours,49:Minutes 

我已经定义了一个函数days_hours_minutes()打印几天,几小时,几分钟。