我希望在bash中获得结束时代。
例如:
date +%s
上面的命令给出了当前的纪元。
我想要当前日期的结束日期。
答案 0 :(得分:4)
您只需使用-d
参数指定。
即。 date -d "today 23:59:59" +%s
今天23:29:59用于结束当天
修改:@ weboptions建议采用以下方法正确处理闰秒-d 'tomorrow 0 -1second
如果您想要一天的开始,请使用
date -d "today 0" +%s
答案 1 :(得分:1)
使用BSD date
,您可以使用-v
正确调整时间。
% date
Tue May 22 09:21:50 EDT 2018
% date -v 23H -v 59M -v 59S
Tue May 22 23:59:59 EDT 2018
稍长一点,但是你不必记住一天中的小时数,一小时内的分钟数等,明天再到午夜,然后减去一秒钟。
% date -v +1d -v 0H -v 0M -v -0S -v -1S
^ ^ ^ ^ ^
| | | | |
| +-----+------+ subtract one second
| |
| reset to midnight
|
go to tomorrow
(遗憾的是-v
无法合并。date -v+1d0H0MS-1S
可以很好地输入。它不是非常易读或明显,但如果你知道如何-v
就很容易解析工作。空白会使它变得更好:date -v "+1d 0H 0M 0S -1S"
。#wishfulthinking)
一种简单但脆弱的方法是将最接近的86400倍数:
$ now=$(date +%s)
$ end_of_day=$(( now - now%86400 + 86399))
但是,在可能相关的两天内,这不会将夏令时考虑在内。