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秒钟范围内的亚秒级分辨率,这在很多情况下都足够好了.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...