Як перетворити DATE на UNIX TIMESTAMP у сценарії оболонки на MacOS


76

У Linux ви можете перетворити дату, наприклад "2010-10-02", у мітку часу Unix у сценарії оболонки за допомогою

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

Оскільки Mac OS не має еквівалента -d для дати . Як перетворити дату на мітку часу unix у сценарії оболонки.

Відповіді:


35

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"

Або використовуйте будь-який формат, який хочете.


У терміналі OSX за допомогою оболонки bash я не можу використати наведену вище команду Приклад: currDate = date +%Y%m%ddate -j -f "% a% b% d% T% Z% Y" "$ {currDate}" "+% s"
Навчається

1
@Jagdeep Це працює на OSX, лише якщо вказаний часовий пояс відповідає часовому поясу системи. Я перебуваю в PDTтак і в команді вище, змінюючи EDTтрейлери PDTпрацювали для мене.
linuxeasy

136
date +%s

Для мене це чудово працює на OS X Lion.


9
Працює і в Linux (Ubuntu 10.04)
Ірфан

3
OP запитує про перетворення конкретної заданої дати в мітку часу. date +%sпросто використовуватиме поточну дату.
luator

17

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


3

Я використовував наступне на Mac OSX.

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

2

Крім того, ви можете встановити дату 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. Немає сенсу намагатися запам’ятати два різні набори опцій або створити сценарій для BSD-версії Bash для Mac, якщо ви не пишете утиліту, яку хочете запустити як на оболонках BSD, так і на GNU / Linux.


0

date -j -f "%Y-%m-%d %H:%M:%S" "2020-04-07 00:00:00" "+%s"

Він буде друкувати динамічні секунди, коли немає %H:%M:%Sі 00:00:00.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.