date – 如何设置当前的Unix时间(以毫秒为单位)?

前端之家收集整理的这篇文章主要介绍了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"

根据my googling我希望能够像这样设置日期(与上面相反):

date +%s.%N -s `date +"%S.%N"`
date +"%s.%N" -s "1323217126.085882000"

都没有工作.有人能在这个问题上提醒我吗?

附:不,我不需要纳秒分辨率.是的,我知道bash执行需要几毫秒.我真正需要的是亚秒级分辨率,十分之一秒就足够了.

这是一个解决方案(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

正如您将注意到的,引入了整整毫秒的延迟.这是由于为初始化内存和加载日期二进制文件所花费的时间.这适用于所有shell和insert-higher-level-language-exec的exec

但是,如果你只需要在10秒钟范围内的亚秒级分辨率,这在很多情况下都足够好了.

原文链接:https://www.f2er.com/bash/385481.html

猜你在找的Bash相关文章