A pergunta relacionada é "Data e hora para Unix" , mas essa pergunta é mais geral.
Preciso de carimbos de data e hora do Unix para resolver minha última pergunta. Meus interesses são Python, Ruby e Haskell, mas outras abordagens são bem-vindas.
Qual é a maneira mais fácil de gerar registros de data e hora do Unix?
unix
unix-timestamp
Léo Léopold Hertz 준영
fonte
fonte
gettimeofday
é o nome do syscall do POSIX e Linux: stackoverflow.com/questions/11765301/… TODO: por questrace date +%d
não chamá-lo?Respostas:
No Linux ou MacOS, você pode usar:
Onde
+%s
, segundos desde 1970-01-01 00:00:00 UTC. (Manual do GNU Coreutils 8.24 Date)Exemplo de saída agora 1454000043.
fonte
date
é normalmente definido no POSIX.2./usr/bin/date +%s and
/ usr / xpg4 / bin / date +% s` trabalhando. Combinado com a recomendação POSIX.2, acho que isso funciona com todos os Solaris também.date -v+60S +%s
para adicionar 1 dia:date -v+24H +%s
e assim por diante. . .em Ruby:
fonte
Time.zone.now.to_i
. Embora dê o mesmo o / p deTime.now.to)_i
masTime.zone.now.to_i
é oRails
caminho../bin/rails runner "p Time.current.to_i"
é outra solução.Em python, adicione as seguintes linhas para obter um carimbo de hora:
fonte
curl icanhazepoch.com
Basicamente, são timestamps unix como serviço (UTaaS)
fonte
curl -L -H "Accept: application/json" unixtimesta.mp
vai dar{"datetime":"Thu, 19 Jul 2018 12:01:21 GMT","timestamp":1532001681}
Em Perl:
fonte
O comando unix 'date' é surpreendentemente versátil.
Pega a saída de
date
, que estará no formato definido por -f, e a imprime (-j diz que não tente definir a data) no formato +% s, segundos desde a época.fonte
date: invalid option -- 'j'
where (GNU Coreutils 8.24 Date manual)
+%s
, segundos desde 1970-01-01 00:00:00 UTC+%N
, nanossegundos (000000000..999999999) desde a épocaExemplo de saída agora
1454000043.704350695
. Notei que o manual do BSDdate
não incluía explicações precisas sobre a bandeira+%s
.fonte
+$N
? Está incluído no registro de data e hora do UNIX em alguns sistemas?%N
não está documentada a página de manual para data no macOS 10.13.1 (High Sierra) e não funciona. A saída de exemplo que eu tenho é:1523342391.N
.gdate
no Homebrew apple.stackexchange.com/a/135749/181223Primeiro, a época do Unix ou o tempo zero é 1970-01-01 00: 00: 00Z (ou seja, meia-noite de 1º de janeiro de 1970 no fuso horário Zulu, GMT ou UTC). Um registro de data e hora do Unix é o número de segundos desde esse horário - sem contabilizar os segundos bissextos.
Gerar o horário atual no Perl é bastante fácil:
Gerar a hora correspondente a um determinado valor de data / hora é um pouco menos fácil. Logicamente, você usa a
strptime()
função do POSIX. No entanto, o módulo Perl POSIX :: strptime (que é separado do módulo POSIX) possui a assinatura:A função
mktime
no módulo POSIX possui a assinatura:Portanto, se você conhece o formato dos seus dados, pode escrever uma variante em:
fonte
Para completar, PHP:
No BASH:
fonte
date
comando, então não acho necessário chamar php a partir daí.em Haskell
em Go
em C
em Swift
fonte
Em Haskell ...
Para recuperá-lo como um tipo POSIXTime:
Como um número inteiro:
fonte
fonte
Vamos tentar o JavaScript :
... ou ainda melhor, a abordagem estática:
Nos dois casos, divido
1000
para ir de segundos a milis e usoMath.floor
apenas para representar segundos inteiros que passaram (vs. arredondamento, que pode arredondar para um segundo inteiro que ainda não passou).fonte
milliseconds
não segundos e o carimbo de data e hora unix é o númeroseconds
decorrido desde 1 de janeiro de 1970 00:00 UTC. Você pode usar JS, basta dividir por 1000 e arredondar:Math.round(Date.now()/1000)
Math.floor
vez deMath.round
. CheersSe você precisar de um registro de data e hora do Unix a partir de um script de shell (família Bourne: sh, ksh, bash, zsh, ...), isso deve funcionar em qualquer máquina Unix, ao contrário das outras sugestões (perl, haskell, ruby, python, data GNU) ), baseia-se em um comando e recurso padrão POSIX.
fonte
No Bash 5, há uma nova variável:
Ou se você deseja maior precisão (em microssegundos):
fonte
Se eu quiser imprimir utc date time usando o comando date, preciso usar o argumento -u com o comando date.
Exemplo
Resultado
fonte
nawk:
fonte
Com o NodeJS, basta abrir um terminal e digite:
node -e "console.log(new Date().getTime())"
ounode -e "console.log(Date.now())"
fonte