
私はサーバーで作業していますが、solaris
そのdate -d
オプションはありません。gdate
いいえ。
私がLinuxで働いたことは次のとおりです。
date -d "$hr:$mi $duration minutes" +'%H%M'
どこ$hr
と$mi
時間と分、$duration
分単位です。
Linuxでこれを実行すると、次のような結果が得られます。
date -d "23:28 60 minutes" +'%H%M'
0028
私がそれを実行すると、次のようなsolaris
結果が得られます。
date: illegal option -- d Usage: date [-u] ...
awk
年齢はかなり多く、ここに解決策はありますかperl
?
また引用して、私も同じ問題があったここ、私はそれを使用する贅沢がありませんdate -d
。ライナーpython
が必要ですperl
。
答え1
少し難しいです。 ":" の周りに分割すると awk 関数があります: split(what,where,sep)
。
私はSolarisでそれを試しました(一行の命令です)
echo 23:28 60 |
awk '{split($1,H,":") ; printf "%2d:%02d\n",H[1]+(H[2]+$2)/60, (H[2]+$2)%60 }'
どこ
- Split($1,H,":") は H[1] に 23 を、H[2] に 28 を入れます。
使用
echo 23:28 60 |
awk '{split($1,H,":") ; printf "%2d:%02d\n",(H[1]+(H[2]+$2)/60)%24, (H[2]+$2)%60 }'
1時間は0〜23の範囲にとどまります。 printfの形式文字列を"%02d:%02d\n"
先行文字に変更します。0
答え2
awkを使用すると、次のことができます。
awk -v dayt="2017 11 10 23 28 23" '{tmstmp=mktime(dayt)+60;print strftime("%M:%S",tmstmp)}' <<< ""
-vフラグを使用して日付と時刻全体をawkに渡し、awk mktimeを使用して日付/時刻の数値表現を取得し、60を追加し、strftimeを追加して表現を目的の形式に変換します。
答え3
これは実験的なハッキングですが、bash
CentOS 7とFedora 26でテストされた最新のビルドで動作します。
#!/bin/bash
hr="23"
mi="28"
duration="60"
printf '%(%H%M)T\n' "$((-(19 * 60 * 60) + (hr * 60 * 60) + (mi * 60) + (duration * 60) ))"
明らかになる0028
。