2015-11-19 140 views
1

我正在尋找一個Linux命令將十六進制時間格式轉換爲Linux時間戳。我已經試過此命令:如何將時間戳從十六進制格式轉換爲EPOCH時間戳?

date "+%Y-%m-%d %H:%M:%S (%s)" --date="@$(printf "%d\n" 0xd6979880)" 
output >> 2084-02-01 11:00:00 (3600259200) 

但它似乎是錯的0xd6979880時代輸出應該是1391270400. 請糾正我,如果我錯了。

回答

2

從您的描述中(預計1391270400而不是3600259200),看起來您的十六進制日期是自1900-01-01以來的秒數,而不是POSIX時間戳(自1970-01-01以來的秒數)。幸運的是,通過減去70年來校正這種偏移是非常容易的:

$ date '+%F %T (%s)' --date="$(date -d @$(printf "%d" 0xd6979880)) - 70 years" 
2014-02-01 16:00:00 (1391270400) 
相關問題