如何在 shell 脚本中找到比当前时间早 30 天的纪元时间?

Posted

技术标签:

【中文标题】如何在 shell 脚本中找到比当前时间早 30 天的纪元时间?【英文标题】:How to find 30 days older epoch time in ms from current time in shell script? 【发布时间】:2021-08-09 06:47:57 【问题描述】:

如何在 shell 脚本中找到距当前时间 30 天的纪元时间?如果我当前的时间是以纪元毫秒为单位的 X。那么我需要 shell 脚本中 30 天前的纪元毫秒

#!/bin/sh
current=$(date +'%s%3N')
echo $current
oldtimestamp=$((current - 30*24*60*60))
echo "old is $oldtimestamp"

这似乎没有给出 30 天前的纪元毫秒。请让我知道如何获得它。提前致谢

【问题讨论】:

您以秒为单位计算了 30 天;您需要乘以 1000 才能获得毫秒数。 意思是:oldtimestamp=$((current - 30*24*60*60*1000)) 太好了,谢谢! 【参考方案1】:

date 命令支持一些自然语言表达式:

date  +'%s%3N' --date='30 days ago'

当然,与$current 相比,这会减少几毫秒,因为执行这些命令本身需要时间,但也许对您来说已经足够接近了。

否则,正确的算术表达式是 Jonathan Leffler 写的:

oldtimestamp=$((current - 30*24*60*60*1000))

但请注意,像闰秒这样的事情可能会让你在这种方法中感到厌烦。

【讨论】:

以上是关于如何在 shell 脚本中找到比当前时间早 30 天的纪元时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 shell 脚本中增加版本号?

如何在脚本中获取进程ID

linux shell脚本中如何引入当前的系统环境变量

php脚本等待shell脚本执行完成

如何找到我正在执行的 tcsh shell 脚本的位置?

Unix shell 脚本 - 使用 /bin/sh shell 查找以前的日期