2015-08-28 167 views
1

我有一個文本文件,希望在Python中打開並獲取日期和時間(在標題中),然後將其更改爲秒(時間戳)。但結果與在線網站不一樣。 代碼:將日期和時間轉換爲時間戳

with open('sample for north - Kopie.txt', "r") as f: 
    content = f.readlines() 

    for x in content : 
     day = float (content [0][:2]) 
     month = float (content [0][3:5]) 
     year = float (content [0][6:10]) 
     hour = float (content [0][10:13]) 
     minn = float (content [0][14:16]) 
     second = float (content [0][17:19]) 
     time = float ((((year-1970)*31556926)+((month-1)*2629743)+((day-1)*86400)+((hour)*3600)+((minn)*60)+second)) 

2015年7月13日計劃的9時38分17秒結果是但網站結果是。

+0

什麼是're'?此外,與文件相關的代碼似乎與問題無關。你可以創建一個函數來處理一條線嗎? –

+0

你是否考慮了閏年等? –

+0

@PeterWood我真的很抱歉。糾正。我剛剛發現網站說,每年是31556926秒,每個月是2629743秒......並且只是把它放在等式中。 – kian

回答

2

您可以使用時間模塊:

import time 

>>>print(time.mktime(time.strptime("13.07.2015 09:38:17", "%d.%m.%Y %H:%M:%S"))) 
1436769497.0 
+0

這是一個好主意。但是如果你把結果放在(http://www.epochconverter.com/)它會給出07:38:17 – kian

+2

這是因爲時間戳根據我的電腦時區,而你的電腦就在你的時區。 – mmachine

+0

它是正確的。最後一個問題:如果我想要像網站一樣廣告時間,我該怎麼辦? – kian

1

有兩個部分:

  1. 轉換時間字符串到Python中的時間對象。你可以使用.strptime()爲:

    from datetime import datetime 
    
    dt = datetime.strptime("13.07.2015 09:38:17", "%d.%m.%Y %H:%M:%S") 
    # -> datetime.datetime(2015, 7, 13, 9, 38, 17) 
    
  2. 轉換時間對象爲(POSIX)日期和時間(Unix時間)。1436780297結果表明,你輸入的時間是UTC,因此你可以使用calendar.timegm()獲得時間戳:

    from calendar import timegm 
    
    timestamp = timegm(dt.timetuple()) 
    # -> 1436780297 
    

Converting datetime.date to UTC timestamp in Python