2017-02-27 36 views
0

我的CSV文件包含日期格式爲:將CSV日期時間爲一個整數

10/3/1946 0:00:00 
4/4/1947 0:00:00 

我想知道發生過的CSV文件中的值,說12/18/1957 0:00:000

爲了進行比較,我假設我需要將其轉換爲數字,例如,10/3/1946 0:00:00將是17078.00

有沒有內置的方法來做到這一點?

+1

爲什麼不實際的比較的一切,日期時間,使用'strptime'? – miradulo

+0

我認爲這樣做會更容易,因爲我也需要自某個日期以來「過去的天數」。 – DPdl

+1

您可以使用'strptime'轉換日期,並計算差異'date1 - date2'。 –

回答

0

我建議你將csv文件中的日期轉換爲datetime格式。這是通過取出字符串並使用strptime()將其轉換爲datetime對象來完成的。該函數採用格式字符串,可以告訴它日期字符串是如何格式化的。例如%Y告訴它期望四位數年份。

首先創建日期時間以與例如after_date。然後,可以將兩個日期如下比較:

from datetime import datetime    
import csv 

after_date = datetime(1957, 12, 18) 
print "Entries after {}".format(after_date) 

with open('input.csv') as f_input: 
    for row in csv.reader(f_input): 
     row_date = datetime.strptime(row[0], "%m/%d/%Y %H:%M:%S") 

     if row_date >= after_date: 
      print "{} - {}".format(row[1], row_date) 

這是假設你正試圖以比較的日期是在第一欄,即row[0]。因此,舉例來說,如果你有一個CSV文件,它看起來像:

10/3/1946 0:00:00,row1 
4/4/1947 0:00:00,row2 
4/4/1957 0:00:00,row3 
12/19/1957 0:00:00,row4 
1/1/1958 0:00:00,row5     

該腳本會顯示如下信息:

Entries after 1957-12-18 00:00:00 
row4 - 1957-12-19 00:00:00 
row5 - 1958-01-01 00:00:00  
相關問題