Как узнать время с начала эпохи в миллисекундах в терминале OSX?
Эквивалент Linux / Ubuntu date +%s.%N
:
Linux $ date +%s.%N
1403377762.035521859
Который не работает в моем терминале OSX:
OSX $ date +%s.%N
1403377800.N
date
Программы в OS X отличается от Coreutils ГНУ date
программы. Вы можете установить coreutils (включая gnu-date), тогда у вас будет версия с date
поддержкой миллисекунд.
Поскольку установка из исходных текстов может быть проблемой для пользователей OS X, я советую вам использовать Homebrew .
Чтобы установить эти инструменты с помощью Homebrew, запустите этот oneliner в своем терминале:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrew теперь установлен (после установки рекомендуется следовать рекомендациям установщика). Теперь мы установим coreutils используя brew
.
brew install coreutils
Как сказано в установке, все команды были установлены с префиксом «g» (например, gdate, gcat, gln и т. Д.). Если вам действительно нужно использовать эти команды с их обычными именами, вы можете добавить каталог «gnubin» в свой PATH ( ~/.bash_profile
), например:
PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
Теперь вы можете запустить
gdate +%s.%N
и это выведет ваше время с эпохи в миллисекундах.
gdate
был установлен в/usr/local/bin/gdate
.date
становится GNUdate
(вместо gdate)+%s.%N
формат дает секунды с точностью до наносекунды, а не миллисекунды. После того, как я использовал brew для установкиgdate
, я проверил страницу руководства, чтобы узнать, доступны ли миллисекунды. Это не. Также не сказано, что%N
можно указать точность for , но я все равно попробовал. Я обнаружил, что команда для получения секунд с точностью до миллисекунды (то есть, три знака после запятой) естьgdate +%s.%3N
.В OS X просто запуск, так
date +%s
как OS X не поддерживает больше точности, чем это вdate
выходных данных, и любая избыточная точность, не поддерживаемая внутренним представлением, усекается до минус бесконечности.Если вы хотите вывод в миллисекундах, вы можете использовать следующую команду, хотя вывод просто исправляется добавлением нулей, а не добавлением точности по вышеуказанной причине. Следующее действительно выводит правильные миллисекунды в системах, которые поддерживают необходимую точность.
Источник для вышеуказанной команды: Unix.SE - Как получить миллисекунды с эпохи Unix
Если вы просто хотите команду, которая добавляет правильное количество нулей в OS X, вы можете использовать:
источник
%-N
, так что ничего не делает (и может вызвать проблемы, если установлена переменная оболочки$N
). Просто используйтеdate +%s000
(или,date +%s.000
если вы хотите десятичную точку).date
команда OS X просто проходит%-N
через asN
, это может помешать вычислению. Попробуйте установитьN=7000000000000000000
, затем попробуйте команду ... На практике это маловероятно, но я чувствую себя безопаснее с чем-то, что не зависит от окружающей среды.это решение работает на macOS.
если вы планируете использовать bash-скрипт и имеете Python, вы можете использовать этот код:
Или напишите
python
скрипт напрямую:источник
Perl вездесущ.
источник