3

Mac OS の bash で真夜中前の時刻を取得したいと考えています (多くの Linux ディストリビューションと同じ日付ユーティリティはありません)。

たとえば、23:56:03 に取得したいのは、「00:03:59」です。

4

2 に答える 2

2

過去のある一定の時間 (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"
}
于 2012-10-16T12:42:11.560 に答える
0

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 "
于 2012-10-15T11:52:20.063 に答える