Solarisに追加された時間と分

Solarisに追加された時間と分

私はサーバーで作業していますが、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

これは実験的なハッキングですが、bashCentOS 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

関連情報