Мне нужна команда оболочки или сценарий, который преобразует метку времени Unix в дату. Входные данные могут поступать либо из первого параметра, либо из stdin, что позволяет использовать следующие шаблоны использования:
ts2date 1267619929
и
echo 1267619929 | ts2date
Обе команды должны вывести «Ср 3 марта 13:38:49 2010».
bash
date
unix-timestamp
chiborg
источник
источник
date -d @$(date -u +%s)
@
? Я не вижу этого на странице руководства GNU вообще.brew install coreutils; gdate -d @1267619929
info 'Date input formats'
возвращает вас прямо кdate
информационному узлу форматирования, с соответствующей цитатой Роберта Грудина, а затем с меню спецификаторов формата.у меня работает на Mac OS X.
источник
Эта версия похожа на ответ Чиборга , но устраняет необходимость внешнего
tty
иcat
. Он используетdate
, но может так же легко использоватьgawk
. Вы можете изменить shebang и заменить двойные квадратные скобки на одинарные, и это также будет работатьsh
.источник
gawk
(очень приблизительно) на 15% быстрее, чемdate
в синхронизированномfor
цикле, состоящем только изgawk 'BEGIN { print strftime("%c", 1256571985); }'
илиdate -d '@1256571985' +%c
с перенаправленным выводом/dev/null
.Вы можете использовать дату GNU, например,
или
источник
Вы можете использовать этот простой скрипт на awk:
Пример использования:
источник
date -s @
не работает иawk
работает! Пример без stdin тоже будет полезен.Поскольку Bash 4.2 вы можете использовать
printf
«S%(datefmt)T
формат:Это хорошо, потому что это встроенная оболочка. Формат для datefmt - строка, принятая
strftime(3)
(см.man 3 strftime
). Вот%c
:Теперь, если вам нужен скрипт, который принимает аргумент и, если он не предоставлен, читает stdin, вы можете выполнить следующее:
источник
Я использую это при преобразовании файлов журнала или мониторинга их:
источник
awk '{ printf strftime("%c: ", $1); $1 = ""; print $0; }'
В OSX, или BSD, есть эквивалентный
-r
флаг, который, очевидно, использует метку времени Unix. Вот пример, который запускает дату четыре раза: один раз для первой даты, чтобы показать, что это такое; один для преобразования в unix timestamp с%s
, и, наконец, один, который с помощью-r
, преобразует то, что%s
обеспечивает обратно в строку.По крайней мере, похоже, работает на моей машине.
источник
Вы можете получить отформатированную дату из отметки времени следующим образом
источник
Я написал скрипт, который делает это сам:
источник
В этом ответе я копирую ответ Денниса Уильямсона и слегка его изменяю, чтобы значительно увеличить скорость при передаче столбца с множеством временных меток в сценарий. Например, передача 1000 временных меток к исходному сценарию с xargs -n1 на моей машине заняла 6,929 с, а не 0,027 с этой модифицированной версией:
источник
некоторый пример:
источник
Я использую этот кроссплатформенный однострочник:
Он должен работать как в macOS, так и в более поздних версиях распространенных дистрибутивов Linux.
источник
Хотя это и не чистый bash, следующий скрипт преобразует метки времени длиной 13 в строке в их эквивалентную дату в вашем местном часовом поясе, используя perl
timestamp_to_date.sh
вход
вывод
источник
В PHP
источник