Как конвертировать DATE в UNIX TIMESTAMP в сценарии оболочки на MacOS - PullRequest
70 голосов
/ 29 сентября 2010

В Linux вы можете преобразовать дату типа "2010-10-02" в метку времени Unix в сценарии оболочки:

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

Поскольку Mac OS не имеет эквивалента -d на дату .Как вы собираетесь конвертировать дату в метку времени Unix в сценарии оболочки.

Ответы [ 5 ]

129 голосов
/ 18 февраля 2012
date +%s

Это прекрасно работает для меня на OS X Lion.

29 голосов
/ 29 сентября 2010

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"

Или используйте любой формат по вашему желанию.

15 голосов
/ 29 сентября 2010

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

2 голосов
/ 16 мая 2014

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

currDate=`date +%Y%m%d`
epochDate=$(date -j -f "%Y%m%d" "${currDate}" "+%s")
0 голосов
/ 18 января 2019

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

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

Mac "другой", потому что OSX основан на BSD. Утилиты BSD обычно обновляются консервативно, а инструменты GNU имеют больше улучшений.

Действительно, если вы проводите большую часть времени в Linux, но у вас есть рабочий стол Mac, вы, вероятно, захотите, чтобы Mac работал как Linux. Также см .: Докер. Нет смысла пытаться запомнить два разных набора параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...