Date
如何以毫秒為單位設置目前的 Unix 時間?
可能的解決方案
date --set="2011-12-07 01:20:15.962" && date --rfc-3339=ns
原始問題
我可以像這樣以毫秒為單位獲取日期:
date +"%S.%N" date --rfc-3339=ns
根據
man date
我希望能夠像這樣設置它:date --set=%s.%N +`date +"%S.%N"` date --set="%s.%N" "+1323217126.085882000"
根據我的Google搜尋,我希望能夠像這樣設置日期(與上述相反):
date +%s.%N -s `date +"%S.%N"` date +"%s.%N" -s "1323217126.085882000"
都不工作。有人能幫我解決這個問題嗎?
PS 不,我不需要納秒級解析度。是的,我知道 bash 執行需要幾毫秒。我真正需要的是亞秒級解析度,10 分之一秒就足夠了。
這是一個解決方案(Linux,不是 Unix):
date --set="2011-12-07 01:20:15.962" && date --rfc-3339=ns
注意延遲:
CURTIME=`date --rfc-3339=ns` date --set="${CURTIME}" NEWTIME=`date --rfc-3339=ns` echo ${CURTIME} echo ${NEWTIME} 2011-12-07 01:48:54.687216122+00:00 2011-12-07 01:48:54.720541318+00:00
您會注意到,引入了整毫秒的延遲。這是由於初始化記憶體和載入
date
二進製文件需要時間。這適用於所有 shell 和exec
insert-higher-level-language-here但是,如果您只需要 10 分之一秒範圍內的亞秒級解析度,這在許多情況下就足夠了。