可能解决方案
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"
根据my googling我希望能够像这样设置日期(与上面相反):
date +%s.%N -s `date +"%S.%N"` date +"%s.%N" -s "1323217126.085882000"
都没有工作.有人能在这个问题上提醒我吗?
附:不,我不需要纳秒分辨率.是的,我知道bash执行需要几毫秒.我真正需要的是亚秒级分辨率,十分之一秒就足够了.
这是一个解决方案(Linux,而不是Unix):
原文链接:https://www.f2er.com/bash/385481.htmldate --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
正如您将注意到的,引入了整整毫秒的延迟.这是由于为初始化内存和加载日期二进制文件所花费的时间.这适用于所有shell和insert-higher-level-language-exec的exec
但是,如果你只需要在10秒钟范围内的亚秒级分辨率,这在很多情况下都足够好了.