因此,我试图得到一个日期,1分钟到未来,但不允许午夜翻转,例如。
date -d "23:58:42 300 seconds" +%H:%M:%S
返回“00:03:42”,但是我希望它的上限为“23:59:59”。2有什么想法吗?
iqih9akk1#
300秒不是一分钟,但是,最简单的方法就是编写一个简单的脚本:
#!/bin/bash t="$1" interval="$2" h=$(date -d "$t $interval seconds" +%H) if [ "$h" = "00" ] ; then echo "23:59:59" else date -d "$t $interval seconds" +%H:%M:%S fi
如果您的间隔时间在一小时以内,此方法效果很好。
rxztt3cl2#
请使用以下脚本进行尝试:
#!/bin/bash secsToAdd=300 addendTime="23:58:42" resultTime=$(date -d "$addendTime $secsToAdd seconds" +%H:%M:%S); midnightTime="23:59:59" addendTimeSeconds=$(echo "$addendTime" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'); midnightTimeSeconds=$(echo "$midnightTime" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'); if [[ "$secsToAdd" -gt $((midnightTimeSeconds-addendTimeSeconds)) ]] then echo "$midnightTime" else echo "$resultTime" fi
逻辑:
如果Seconds to add > Midnight time - Addend time-〉,则存在溢出。
Seconds to add > Midnight time - Addend time
2条答案
按热度按时间iqih9akk1#
300秒不是一分钟,但是,最简单的方法就是编写一个简单的脚本:
如果您的间隔时间在一小时以内,此方法效果很好。
rxztt3cl2#
请使用以下脚本进行尝试:
逻辑:
如果
Seconds to add > Midnight time - Addend time
-〉,则存在溢出。