在Mac OS上的bash中获取格式化的午夜时间

时间:2012-10-15 11:48:10

标签: macos bash

我希望在Mac OS的bash午夜之前得到时间(与许多Linux发行版的日期实用程序不同)。

例如,在23:56:03我想得到:“00:03:59”。

2 个答案:

答案 0 :(得分:2)

如果使用Unix时间戳,数学会更容易一些,Unix时间戳是过去某个固定时间(1970年1月1日)经过的秒数。我使用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"
}

答案 1 :(得分:0)

OSX有日期命令

请参阅 - OSX Date man page

为了获得时间利用:

date +"%T"

您需要使用一些 BASIC 数学

#!/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 "