2017-06-27 220 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()打印幾天,幾小時,幾分鐘。