所以我試圖在未來 1 分鐘內找到一個日期,但不允許午夜翻轉,例如
date -d "23:58:42 300 seconds" %H:%M:%S
回傳“00:03:42”,但我希望它的上限為“23:59:59”。有什么想法嗎?
uj5u.com熱心網友回復:
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
如果您的時間間隔不到一小時,這很有效。
uj5u.com熱心網友回復:
嘗試使用以下腳本:
#!/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-> 你有溢位。
(無論要添加的秒數有多大,它都有效)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512830.html
標籤:linux重击壳
上一篇:如何在shell腳本中的檔案中使用jq更新鍵中的值?
下一篇:gitpre-commit錯誤:檢查檔案名:.git/hooks/pre-commit;第25行;語法錯誤:檔案意外結束
