3

我想在 Mac OS 上的 bash 中获得午夜之前的时间(它没有与许多 Linux 发行版相同的日期实用程序)。

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

4

2 回答 2

2

如果您使用 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"
}
于 2012-10-16T12:42:11.560 回答
0

OSX 有 date 命令

请参阅 - OSX 日期手册页

要获得时间,请使用:

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