如何使用该date
命令并给出时间戳,以获取X
几天前的时间戳。例如 UTC 时间戳是1525192000
,我想30
在这之前几天获得 UTC 时间戳。
首先,您的时间戳是自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数,这是我的假设,如果不是,请将其转换为。
因此,您必须减去所需天数的秒数。
stamp=1525192000
day=$((60*60*24))
echo $(($stamp - 30*$day))
Run Code Online (Sandbox Code Playgroud)
然后你会得到一个 Unix 纪元时间,如果需要转换为日期和时间,你可能需要考虑 DST,这就是你可能需要使用该date
实用程序的地方。
请注意,您也可以使用date
. 这使您可以轻松使用其他日期元素,无需计算:
使用 GNU date
:
date --date="$(date --iso-8601=s -d @1525192000) -30 days" +%s
Run Code Online (Sandbox Code Playgroud)
例子:
$ date --date="$(date --iso-8601=s -d @1525192000)"
Tue, May 1, 2018 7:06:01 PM
$ date --date="$(date --iso-8601=s -d @1525192000) -30 days"
Wed, Apr 1, 2018 7:06:01 PM
$ date --date="$(date --iso-8601=s -d @1525192000) -30 days" +%s
1523466380
$ date --date="$(date --iso-8601=s -d @1525192000) -30 days -1 week -3 months" +%s
1514309200
Run Code Online (Sandbox Code Playgroud)
在 FreeBSD 和 macOS 中(-j
意思是不要尝试设置系统日期,好用又安全)
date -j -f "%a %b %d %T %Z %Y" "$(date -r 1234567890)" -v-30d "+%s"
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢,Kusalananda、OpenBSD 和 NetBSD 不支持-v
.
归档时间: |
|
查看次数: |
4539 次 |
最近记录: |