指定した時間にn時間を追加する方法は?


15

午前6時45分と言う時間をとり、さらに時間を追加して1.45時間とすると、別の時間になります。別の時間を取得するために、午前6時45分に1.45時間を追加します。

そのためのコマンドラインユーティリティはありますか?私はいくつかのグーグルをやったが、マニュアルページを読んで、dateそのようなものを見つけていない。wcalc時間の計算を処理していないようです。

編集:2015年3月6日。これは10進数の時間を使用することになったスクリプトです。いくつかのエラーチェックを使用して、HH:MMが時間に2桁を使用していることを確認できます。

#!/bin/bash
# Mar 6, 2015
# Add decimal hours to given time. 
# Syntax: timeadd HH:MM HOURS
# There MUST be 2 digits for the hours in HH:MM.
# Times must be in military time. 
# Ex: timeadd 05:51 4.51
# Ex: timeadd 14:12 2.05
echo " "
# If we have less than 2 parameters, show instructions and exit.
if [ $# -lt 2 ]
then
    echo "Usage: timeadd HH:MM DECHOURS"
    exit 1
fi
intime=$1
inhours=$2
# Below is arithmetic expansion $(())
# The bc calculator is standard on Ubuntu. 
# Below rounds to the minute. 
inminutes=$(echo "scale=0; ((($inhours * 60)*10)+5)/10" | bc)
echo "inminutes=$inminutes"
now=$(date -d "$intime today + $inminutes minutes" +'%H:%M')
echo "New time is $now"

回答:


26

コマンドライン:

$ now=$(date -d "06:45 today + 105 minutes" +'%H:%M')
$ echo "$now"
08:30

$now 指定した時間を保持します。

「と」の間に多くのものを入れることができます。現在の時刻と105を加算します。


$now=$(date -d "06:45 today + 2.5 hour" +'%H:%M')
date: invalid date `06:45 today + 2.5 hour'
$now=$(date -d "06:45 today + 2:30 hour" +'%H:%M')
date: invalid date `06:45 today + 2:30 hour'
$ now=$(date -d "06:45 today + 2 hour" +'%H:%M')
$ echo "$now"
08:45

小数は許可されません...


コメントから:10進数の1.45時間の答えを得るには:

$ now=$(date -d "06:45 today + $((145 * 60 / 100)) minutes" +'%H:%M')
$ echo "$now:
8:12

スクイー!ありがとうございました!最後の部分を読むのに問題がありましたが、%H:%Mの周りの部分は2つの単一引用符です。これを分に変換する代わりに、10進数の時間でこれを行う方法はありますか?それはステップを排除します。特別な計算機をインストールすることもできます。あなたの仕事に感謝しますが、誤解しないでください。
ブラッシュ14

「+10日」も機能します。「+2時間」も同様です。もちろん、あなたはまた、2.5時間から数分を作るためにここにメソッドを追加することができ;)私はあなたが使用できる単語の完全なリストを発見したことはありません...
Rinzwind

@Bulrush hmm時間で小数は使用できません:D
Rinzwind

@Rinzwindよくわかりませんが、2:30 hour代わりに試しました2.5 hourか?
αғsнιη

1
@Rinzwindだから、使用できるのは2 hour + 30 minutes;)
αғsнιη14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.