yyyy - linux format date time




Obtenha o tempo atual em segundos desde a época no Linux, Bash (5)

Eu preciso de algo simples como a date , mas em segundos desde 1970, em vez da data atual, horas, minutos e segundos.

date não parece oferecer essa opção. Existe uma maneira fácil?


Solução bash pura

Desde o bash 5.0 você pode usar a variável EPOCHSECONDS .

$ echo $EPOCHSECONDS
1547624774

Há também EPOCHREALTIME que inclui frações de segundos.

$ echo $EPOCHREALTIME
1547624774.371215

EPOCHREALTIME pode ser convertido em microssegundos (μs) removendo o ponto decimal. Isso pode ser de interesse ao usar a aritmética embutida do bash (( expression )) que só pode manipular inteiros.

$ echo ${EPOCHREALTIME/./}
1547624774371215

Em todos os exemplos acima, os valores do tempo impresso são iguais para melhor legibilidade. Na realidade, os valores de tempo seriam diferentes, pois cada comando leva um pequeno tempo para ser executado.


Apenas para adicionar.

Obter os segundos desde a época (1 de janeiro de 1970) para qualquer data (por exemplo, 21 de outubro de 1973).

date -d "Oct 21 1973" +%s


Converta o número de segundos de volta para data

date --date @120024000


A date comando é bastante versátil. Outra coisa legal que você pode fazer com a data (descaradamente copiada de date --help ). Mostrar a hora local das 9h da próxima sexta-feira na costa oeste dos EUA

date --date='TZ="America/Los_Angeles" 09:00 next Fri'

Melhor ainda, reserve um tempo para ler a página do manual http://man7.org/linux/man-pages/man1/date.1.html


Com a maioria das implementações do Awk:

awk 'BEGIN {srand(); print srand()}'

Esta é uma extensão do que @pellucide fez, mas para Macs:

Para determinar o número de segundos desde a época (1º de janeiro de 1970) para qualquer data específica (por exemplo, 21 de outubro de 1973)

$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s"
120034800

Por favor, note que para a integralidade, eu adicionei a parte de tempo para o formato. A razão disso é que a date vai pegar qualquer parte da data que você forneceu e adicionar a hora atual ao valor fornecido. Por exemplo, se você executar o comando acima às 16:19, sem a parte '00: 00: 00 ', ele adicionará a hora automaticamente. Tal que "21 de outubro de 1973" será analisado como "21 de outubro de 1973 16:19:00". Isso pode não ser o que você quer.

Para converter seu carimbo de data e hora em uma data:

$ date -j -r 120034800
Sun Oct 21 00:00:00 PDT 1973

Página man da Apple para a implementação da data: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html


use este script bash (my ~/bin/epoch ):

#!/bin/bash

# get seconds since epoch
test "x$1" == x && date +%s && exit 0

# or convert epoch seconds to date format (see "man date" for options)
EPOCH="$1"
shift
date -d @"$EPOCH" "[email protected]"




datetime