Подтвердить что ты не робот

Как преобразовать DATE в UNIX TIMESTAMP в оболочку script в MacOS

В Linux вы можете конвертировать дату типа "2010-10-02" в временную метку unix в оболочке script на

date -d "2010-10-02" "+%s"

Так как Mac OS не имеет эквивалента -d для даты. Как вы собираетесь конвертировать дату в временную метку unix в оболочке script.

4b9b3361

Ответ 1

man date на OSX есть этот пример

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

Что я думаю, делает то, что вы хотите.

Вы можете использовать это для определенной даты

date -j -f "%a %b %d %T %Z %Y" "Tue Sep 28 19:35:15 EDT 2010" "+%s"

Или используйте любой формат, который вы хотите.

Ответ 2

date +%s

Это отлично работает для меня на OS X Lion.

Ответ 3

date -j -f "%Y-%m-%d" "2010-10-02" "+%s"

Ответ 4

В Mac OSX я использовал следующее.

currDate=`date +%Y%m%d`
epochDate=$(date -j -f "%Y%m%d" "${currDate}" "+%s")

Ответ 5

В качестве альтернативы вы можете установить дату GNU следующим образом:

  1. установить Homebrew: https://brew.sh/
  2. brew install coreutils
  3. добавьте в свой bash_profile: alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

Комментарии о том, что Mac должен быть "другим", просто показывают, что комментатор не знает истории UNIX. macOS основан на BSD UNIX, который намного старше, чем Linux. По сути, Linux был копией других систем UNIX, и Linux решил стать "другим", приняв инструменты GNU вместо инструментов BSD. Инструменты GNU более удобны для пользователя, но обычно их нет ни в одной * системе BSD (просто так).

Действительно, если вы проводите большую часть своего времени в Linux, но у вас есть рабочий стол Mac, вы, вероятно, захотите, чтобы Mac работал как Linux. Нет смысла пытаться запомнить два различных набора параметров или сценарии для Bash-версии Mac для BSD, если вы не пишете утилиту, которую хотите запускать как для оболочек BSD, так и для GNU/Linux.