Mac OS の bash で真夜中前の時刻を取得したいと考えています (多くの Linux ディストリビューションと同じ日付ユーティリティはありません)。
たとえば、23:56:03 に取得したいのは、「00:03:59」です。
過去のある一定の時間 (1970 年 1 月 1 日) からの経過秒数である Unix タイムスタンプを使用すると、計算が少し簡単になります。local
ビルトインを使用して、それらを関数に対してローカルにし、変数の整数属性を設定します。これにより、算術演算を行うための構文が簡単になるためです。
print_time_until_midnight () {
local -i now=$(date +%s)
if (( now % 86400 == 0 )); then
# If it is exactly midnight, say so
echo "Time remaining: 00:00:00"
return
fi
# Get the time for 00:00:00 *tomorrow* (the next midnight)
local -i midnight=$(date -v+1d -v0H -v0M -v0S +%s)
local -i S=midnight-now
local -i H=S/3600
S=S-H*3600
local -i M=S/60
S=S-M*60
echo "Time remaining: $H:$M:$S"
}
OSXにはdateコマンドがあります
参照 - OSX Date のマニュアルページ
時間の使用だけを取得するには:
date +"%T"
いくつかの基本的な数学を使用する必要があります
#!/usr/bin/env bash
hours=`date +"%H"`
minutes=`date +"%M"`
seconds=`date +"%S"`
# Time till midnight
echo `expr 23 - ${hours}`" hours, "`expr 59 - ${minutes}`" minutes, and "`expr 59 - ${seconds}`" seconds "