Eu preciso de um comando ou script de shell que converta um carimbo de data e hora do Unix em uma data. A entrada pode vir do primeiro parâmetro ou do stdin, permitindo os seguintes padrões de uso:
ts2date 1267619929
e
echo 1267619929 | ts2date
Ambos os comandos devem gerar "Wed 3 de março 13:38:49 2010".
bash
date
unix-timestamp
Chiborg
fonte
fonte
date -d @$(date -u +%s)
@
? Não vejo isso na página de manual do GNU.brew install coreutils; gdate -d @1267619929
info 'Date input formats'
leva você diretamente aodate
nó de informações de formatação, com a citação pertinente de Robert Grudin e, em seguida, um menu de especificadores de formato.funciona para mim no Mac OS X.
fonte
Esta versão é semelhante à resposta de chiborg , mas elimina a necessidade de informações externas
tty
ecat
. Ele usadate
, mas poderia usar com a mesma facilidadegawk
. Você pode alterar o shebang e substituir os colchetes duplos por simples e isso também ocorrerásh
.fonte
gawk
é (aproximadamente) 15% mais rápido do quedate
em umfor
loop cronometrado que consiste apenas degawk 'BEGIN { print strftime("%c", 1256571985); }'
oudate -d '@1256571985' +%c
com saída redirecionada para/dev/null
.Você pode usar a data GNU, por exemplo,
ou
fonte
Você pode usar este script awk simples:
Uso da amostra:
fonte
date -s @
não funciona eawk
ainda funciona! Um exemplo sem um stdin também seria útil.Desde o Bash 4.2, você pode usar
printf
o%(datefmt)T
formato:Isso é legal, porque é um shell embutido. O formato para datefmt é uma sequência aceita por
strftime(3)
(consulteman 3 strftime
). Aqui%c
está:Agora, se você deseja um script que aceite um argumento e, se nenhum for fornecido, lê stdin, poderá prosseguir como:
fonte
Eu uso isso ao converter arquivos de log ou monitorá-los:
fonte
awk '{ printf strftime("%c: ", $1); $1 = ""; print $0; }'
No OSX, ou BSD, há um
-r
sinalizador equivalente que aparentemente leva um timestamp unix. Aqui está um exemplo que executa a data quatro vezes: uma vez na primeira data, para mostrar o que é; um para a conversão em carimbo de data / hora unix%s
e, finalmente, um que, com-r
, converte o que%s
fornece de volta em uma string.Pelo menos, parece funcionar na minha máquina.
fonte
Você pode obter a data formatada a partir de timestamp como este
fonte
Eu escrevi um script que faz isso sozinho:
fonte
Nesta resposta, copio a resposta de Dennis Williamson e modifico-a levemente para permitir um grande aumento de velocidade ao canalizar uma coluna de muitos registros de data e hora para o script. Por exemplo, o envio de 1000 registros de data e hora para o script original com xargs -n1 na minha máquina levou 6.929s em vez de 0.027s com esta versão modificada:
fonte
algum exemplo:
fonte
Eu uso este liner de plataforma cruzada:
Ele deve funcionar no macOS e nas versões posteriores de distribuições comuns do Linux.
fonte
Embora não seja puro bash, o script a seguir converterá carimbos de data e hora de comprimento 13 em uma string para a data equivalente no fuso horário local usando perl
timestamp_to_date.sh
entrada
resultado
fonte
Em PHP
fonte