我正在編寫一些bash腳本,用於解析和修改OS X中Google Chrome的多個首選項和書籤。某些值需要提供17位WebKit時間戳。現在我已經用13116319200000000
對它進行了硬編碼,這相當於本週一在CEST開始工作的日子,但是如果按照當前系統時間計算,這將非常棒,因爲腳本將在不同的時間部署。將當前時間轉換爲WebKit/Chrome 17位數時間戳
WebKit時間戳是自1601年1月1日00:00 UTC以來的64位值,以微秒爲單位。在OS X上bash的這種轉換可能是不可能的,因爲data
的內置版本不支持高於一秒的分辨率(如%N
),但也許一些高智能的數學可以。
不管怎麼說,我在網上搜索,發現關於如何此類時間戳轉換爲人類可讀的時間,而不是周圍的其他方式的多個實例。最好的例子是this website,從一些dpcnull用戶列表python腳本:
import datetime
def date_from_webkit(webkit_timestamp):
epoch_start = datetime.datetime(1601,1,1)
delta = datetime.timedelta(microseconds=int(webkit_timestamp))
print epoch_start + delta
inTime = int(raw_input('Enter a Webkit timestamp to convert: '))
date_from_webkit(inTime)
,也有這個JavaScript對錶單的動作(其中document.we.wk.value
指向形式):
function WebkitToEpoch() {
var wk = document.we.wk.value;
var sec = Math.round(wk/1000000);
sec -= 11644473600;
var datum = new Date(sec * 1000);
var outputtext = "<b>Epoch/Unix time</b>: " + sec;
outputtext += "<br/><b>GMT</b>: " + datum.toGMTString() + "<br/><b>Your time zone</b>: " + datum.toLocaleString();
$('#resultle1').html(outputtext);
}
那看起來可能很容易倒置,但我嘗試失敗。
有趣的是,該網站顯示當前的WebKit時間戳,但經過檢查,我認爲它是在服務器級別的PHP計算的,因此無法訪問它。
如果有人能幫助我,我可以嵌入我的腳本,我會很高興。
注:雖然谷歌瀏覽器的所有17位精確微秒,我並不真的需要這樣的分辨率。就像在鏈接的網站上,四捨五入到最後六位數字是零是非常好的。唯一重要的因素 - 它必須正確計算。
非常感謝您對__點的快速回復!在試圖將你的代碼放入我的時候,我實際上已經發現'datetime.now()'輸出的精確微秒(帶'%f'),所以我用它來獲得完整的分辨率。幸運的是,經過幾次測試,我發現微秒顯然沒有前導零,但是感謝[pyformat](https://pyformat.info)網站,我發現了'{:06d}'。 。我會在這裏發佈我的最終代碼。 – Soyek