Por exemplo em swift você faria:
let date = Date(timeIntervalSinceReferenceDate: 500000)
print(date)
para obter:
2001-01-06 18:53:20 +0000
Por exemplo em swift você faria:
let date = Date(timeIntervalSinceReferenceDate: 500000)
print(date)
para obter:
2001-01-06 18:53:20 +0000
Como o Unix' Epoch é 1970-01-01 00:00:00 UTC em vez de 2001-01-01 00:00:00 UTC, as ferramentas disponíveis, como o comando gnu date, devem apenas fornecer os segundos entre ambos, além de os dados reais para fornecer o resultado usando seus recursos de conversão integrados.
UPDATE : (graças ao comentário de @Kusalananda) na verdade nem é necessário mencionar o Unix Epoch, porque o comando GNU date aceita adicionar diretamente um deslocamento de tempo a uma determinada data. Deve ser fornecido apenas com o sufixo de unidade correto (aqui
seconds
). Isso torna o comando mais simples, mais genérico e mais fácil de ler:Para produzir exatamente como o formato de saída do OP, substitua
--iso-8601=s
por'+%F %T %z'
O comando acima usa essas opções e parâmetros:
-d
: use a data fornecida em vez da data atual. Pode incluir adições de deslocamentos de tempo.--iso-8601=s
é o formato ISO semelhante a (dar ou tirar alguns espaços etc.)+%F %T %z
que é o mesmo que+Y-%m-%d %H:%M:%S %z
: auto-explicativo, com %z o fuso horário deslocado para UTC, que aqui será +0000 desdeTZ=UTC
que o forçou.Usando uma
awk
implementação que suportemktime()
estrftime()
(comomawk
ou GNUawk
):Isso primeiro cria um carimbo de data/hora do UNIX correspondente a 2001-01-01 às 00:00 e, em seguida, adiciona 500.000 segundos a ele e formata e imprime o resultado de acordo com a
strftime()
string de formato. Os cálculos aqui são feitos em hora local.Com os segundos retirados de um argumento na linha de comando:
Lendo os segundos da entrada padrão (a primeira palavra em cada linha):
Consulte o
awk
manual para obter uma descrição das funçõesmktime()
estrftime()
, e também consulteman strftime
as strings de formato disponíveis.Defina a variável de ambiente TZ
UTC
para fazer cálculos e saída em UTC em vez de hora local: