2013-10-10 78 views
2

我在尋找python相當於GNU date(1)的選項。基本上我想將日期轉換爲秒,就像下面的例子,我試着從python文檔看,但我找不到等效的時間模塊。轉換日期爲秒

$ convdate="Jul 1 12:00:00 2015 GMT" 

$ date '+%s' --date "$convdate" 

1435752000 

GNU date(1)手冊頁

-d, --date=STRING 
       display time described by STRING, not 'now' 
+0

看看在[將日期時間格式轉換爲秒](http://stackoverflow.com/q/18269888/1730674) – askewchan

回答

4

,據我瞭解,UNIX代表的日期從1970年1月1日偏移,所以爲了做到這一點在Python你可以得到時間三角洲。特別是對於你的例子:

from datetime import datetime 
a = datetime.strptime(convdate, "%b %d %H:%M:%S %Y %Z") 
b = datetime(1970, 1, 1) 
(a-b).total_seconds() 

輸出是

1435752000.0

1

轉換你想被稱爲「紀元以來的秒數」,並使用函數像這樣一個計算:

def unix_time(dt): 
    epoch = datetime.datetime.utcfromtimestamp(0) 
    delta = dt - epoch 
    return delta.total_seconds() 

你可以直接使用日期的每個部分加載日期時間或從字符串加載日期時間並計算秒數:

>>> def unix_time(dt): 
...  epoch = datetime.datetime.utcfromtimestamp(0) 
...  delta = dt - epoch 
...  return delta.total_seconds() 
... 
>>> import datetime 
>>> a = datetime.datetime(2015, 07, 01, 12, 00, 00) 
>>> print a 
2015-07-01 12:00:00 
>>> print unix_time(a) 
1435752000.0 
>>> 

注意:您可以使用長(unix_time(A)),如果你想擺脫過去的0.0

的希望它能幫助!

2
>>> x = datetime.strptime('Jul 1 12:00:00 2015 GMT', '%b %d %H:%M:%S %Y %Z') 
>>> x.timestamp() 
1435744800.0 

注意,這是一個本地時間戳。我的時區是UTC + 2,因此比您期望的要少2小時。如果你想要一個基於UTC的時間戳,你可以這樣做:

>>> from datetime import timezone 
>>> x.replace(tzinfo=timezone.utc).timestamp() 
1435752000.0 
1

mktime可用於計算以秒爲單位輸入時間:

>>> import time 
>>> m = time.localtime()#store it in a var 
>>> time.mktime(m) 
o/p: 1435657461.0 
+0

評論已更新。 – Sanyal