通过 shell 在现有自定义日期格式中添加分钟
Add mins in existing custom date format via shell
我在使用 date +%y%j.%H%M%S
、
等自定义日期格式时遇到问题
我想要的是在系统当前日期的这个日期添加 15 分钟。这样我就可以在我的过程中进行进一步的计算。
我试过下面的代码 -
$uprBond=`date +%y%j.%H%M%S`
$ echo $uprBond
16079.031135
$ date -d "$(uprBond) + 5 minutes" +%y%j.%H%M%S
op > bash: uprBond: command not found
16079.035920
我在传递上述日期格式时失败了,任何人都可以帮助解决这个问题。
请注意,当我使用日期函数而不是定义的日期变量即 $uprBond (我不想使用预定义的日期,因为我们有一些旧的相同格式的日期需要添加分钟)。
date +%y%j.%H%M%S -d "`date` + 5 minutes";
op > 16079.040724
使用 GNU 日期,GNU bash 4 及其 Parameter Expansion:
#!/bin/bash
uprBond="$(date +%y%j.%H%M%S)"
year="20${uprBond:0:2}"
doy="${uprBond#${uprBond:0:2}}"
doy="${doy%.*}"
time="${uprBond#*.}"
time="${time:0:2}:${time:2:2}:${time:4:2}"
in5min=$(date -d "${year}-01-01 +${doy} days -1 day +5 minutes ${time}" "+%y%j.%H%M%S")
echo "now: $uprBond"
echo "in 5min: $in5min"
输出:
now: 16079.145026
in 5min: 16079.145526
我在使用 date +%y%j.%H%M%S
、
我想要的是在系统当前日期的这个日期添加 15 分钟。这样我就可以在我的过程中进行进一步的计算。
我试过下面的代码 -
$uprBond=`date +%y%j.%H%M%S`
$ echo $uprBond
16079.031135
$ date -d "$(uprBond) + 5 minutes" +%y%j.%H%M%S
op > bash: uprBond: command not found
16079.035920
我在传递上述日期格式时失败了,任何人都可以帮助解决这个问题。
请注意,当我使用日期函数而不是定义的日期变量即 $uprBond (我不想使用预定义的日期,因为我们有一些旧的相同格式的日期需要添加分钟)。
date +%y%j.%H%M%S -d "`date` + 5 minutes";
op > 16079.040724
使用 GNU 日期,GNU bash 4 及其 Parameter Expansion:
#!/bin/bash
uprBond="$(date +%y%j.%H%M%S)"
year="20${uprBond:0:2}"
doy="${uprBond#${uprBond:0:2}}"
doy="${doy%.*}"
time="${uprBond#*.}"
time="${time:0:2}:${time:2:2}:${time:4:2}"
in5min=$(date -d "${year}-01-01 +${doy} days -1 day +5 minutes ${time}" "+%y%j.%H%M%S")
echo "now: $uprBond"
echo "in 5min: $in5min"
输出:
now: 16079.145026 in 5min: 16079.145526