gpt4 book ai didi

linux - 想要操纵日期命令来计入今天之后的 future

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:13 25 4
gpt4 key购买 nike

我有一段代码,我一直在我一起破解的警报脚本中使用,并且在过去一年左右的时间里一直在成功使用。但从某种意义上说,它一直是有限的,如果我指定的闹钟持续时间会超过午夜,超过 23:59,那么闹钟只会立即响起。

这不是问题 b/c 大多数时候我只是设置 1、5、10、30 或 45 分钟的闹钟作为快速提醒。但现在我想扩展功能以在需要时延长一天以上,我确信需要修改的是这段代码:

sleep $(( $(date --date="$at" +%s) - $(date +%s) ));

通过第一次运行:

15:10 ~ $ $(( $(date --date="23:59" +%s) - $(date +%s) )) ; date
bash: 31706: command not found
Sat Jul 12 15:10:34 ICT 2014

我看到距离晚上 11:59 还有 31706 秒。然后:

15:10 ~ $ $(( $(date --date="00:00" +%s) - $(date +%s) )) ; date
bash: -54637: command not found
Sat Jul 12 15:10:37 ICT 2014

我可以看到代码并没有简单地将额外的 1 秒添加到午夜(明天)之前的总秒数,而是实际上似乎倒计时到今天早些时候已经发生的午夜,大约 15 个多小时前。

老实说,我不确定整个代码片段。我想知道的是,是否有人会介意将事情分解以便更清楚地了解这里到底发生了什么,这样我就可以更好地修改我的脚本,以便它继续向前计数到 future ,甚至超越将要发生的时间戳超出当前日期。

最佳答案

只有给定时间时,该时间适用于当前日期,因此 00:00 指的是今天的午夜,这已经过去了。要引用明天开始的午夜,明确指定日期为 tomorrow,即整个日期时间为 tomorrow 00:00:

$ date
Sat Jul 12 10:29:16 CEST 2014
$ date -d "00:00"
Sat Jul 12 00:00:00 CEST 2014
$ date -d "tomorrow 00:00"
Sun Jul 13 00:00:00 CEST 2014

使用该语法,获取到午夜的秒数就可以了:

$ echo $(( $(date -d "tomorrow 00:00" +%s) - $(date +%s) ))
48527

注意:当恰好在午夜运行时,此代码将打印 86400,而不是 0。

关于linux - 想要操纵日期命令来计入今天之后的 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24711094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com