如何创建带有时间戳的动态日期?

时间:2018-07-11 11:26:48

标签: linux unix unix-timestamp

我是Linux新手。 我有以下要求。 让我们说,现在的日期时间是me 我想生成一个新的日期时间戳记,该日期时间戳记应等于小时的最接近值,即2018-07-11 15:01:23的乘数。 例如,使用下面的当前日期和时间,结果应如下所示:

8

如果我当前的日期时间戳是startdate = 2018-07-11 00:00:00 & enddate = 2018-07-11 08:00:00. 日期应如下所示:

2018-07-12 07:01:11

我想按照上述方法自动执行日期。 谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您在注释部分所做的操作效率很低,因为它调用date命令的次数是其六倍或更少。
如果脚本在午夜之前不到一秒钟被调用,并且日期在 设定月份和日期?
可以说该脚本是在2018-04-31 23:59:59处调用的,但是分配的值可能等于2018-04-01 00:00:00。
想要的日期是2018年4月31日23:59:59或5月1日00:00:00。
脚本可以得到的是2018年4月1日00:00:00。整整一个月!

更好的方法是从日期中获取单个字符串并将其拆分为各个部分。

date=$(date +%Y-%m-%dT%H:%M:%S)
time=${date#*T}
date=${date%T*}
year=${date%%-*}
daymonth=${date#*-}
month=${daymonth%-*}
day=${daymonth#*-}
hour=${time%%:*}
minsec=${time#*-}
minute=${minsec%-*}
second=${minsec#*-}

现在,您可以像代码的其他部分一样进行计算。