2017-05-24 78 views
0

我必須將由rsync的ls返回的日期和時間轉換爲由time.time()返回的Unix時期時間float。將人類可讀的日期和時間轉換爲Unix時間float

對我而言,在這一刻它看起來像: 2017/05/24 hh:mm:ss。 但據我所知,它可以因機器而異,因爲rsync使用ssh和本地ls,我期望通過它。

是否有任何簡單的方法來將最常見的人類可讀日期和時間普遍轉換回Unix時間浮點數? 要清楚。我希望能夠將D和T的任何文本表示轉換爲浮點數。

如果日期時間可以做到這一點,我現在找不到。

+0

對於'ls',你可以使用'ls -l命令「--time風格= +%s''指定時間應該如何格式化。它實際上不*取決於發行版,而更多地取決於'locale':關於如何表示時間/日期的文化設置。例如,我認爲在以色列配置的一臺機器可能會使用猶太年份。 –

+0

嗯,是的,我確定我尊重當地的設置,這根本不能幫助我。特別是當我使用rsync去ls。我會看看我是否可以從那裏影響時間輸出格式,但我懷疑它。我可能最終會直接使用ssh來獲取文件統計信息,但是如果知道Python是否可以進行轉換,那將會很高興。它會大大簡化一些東西。 – Dalen

回答

1

首先需要使用time.strptime然後calendar.timegm 根據要轉換爲本地時間還是UTC時間有不同的選項。看看這個文檔。 要獲得浮點部分,您需要輸入小時,分鐘,秒和毫秒。在你的例子中,你只給出年份,月份和日期,所以其餘部分應該是零,即毫秒,因此沒有浮點部分。

這裏小例子:

import calendar, time 

t = time.strptime('2017/05/24', '%Y/%m/%d') 
epoch = calendar.timegm(time.struct_time(t)) 
print(epoch) 

1495584000 
+0

優秀! time.ctime(epoch)給'WedMay 24 00:00:00 2017'我知道這是類似的東西!雖然這不會自動識別格式。如果它也被實現,那將是非常出色的。也許有些東西可以用正則表達式來完成。 – Dalen

+0

你只需要決定它可以使用任何格式的格式,例如time.strptime('2017/05/24 23:45:04','%Y /%m /%d%H:%M:% S「)檢查這張表https://docs.python.org/3.7/library/time.html#time.strftime –

+0

如果你有非統一的格式,那麼你必須爲他們每個人制定具體的案例。 –

相關問題