Técnicas de conversão de época: 1.
Converter data em época: Para
converter uma data e hora em época em segundos, você pode usar o comando `date` com a opção ` +%s`.
Por exemplo, para converter a data e hora "1º de janeiro de 1970 00:00:00 UTC" em horário de época, você usaria o seguinte comando:
```
$ data --utc -d '01-01-1970 00:00:00 UTC' +%s
```
Este comando geraria o seguinte horário de época:
```
0
```
2.
Converta a época em data: Para
converter a época em uma data e hora, você pode usar o comando `date` com a opção ` -d @`.
Por exemplo, para converter a época "0" em uma data e hora, você usaria o seguinte comando:
```
$ data -d @0
```
Este comando geraria a seguinte data e hora:
```
Qui, 1º de janeiro 00:00:00 UTC 1970
```
3.
Adicionar/subtrair segundos de/para a época: Para
adicionar ou subtrair segundos a partir da época, você pode usar o comando `date` com as opções ` -d @` e ` +%s`.
Por exemplo, para adicionar 60 segundos ao tempo de época "0", você usaria o seguinte comando:
```
$ data -d @0 +%s
```
Este comando geraria o seguinte horário de época:
```
60
```
Para subtrair 60 segundos do tempo de época "60", você usaria o seguinte comando:
```
$ data --data='@60 segundos' -u +%s
```
5. Converta segundos para formato de data:
```
$ data -d @1585233869
```
Para subtrair 1 dia (86.400 segundos) do tempo da época:
```
$ date -d "agora - 1 dia" +%s
```
Aqui estão os 13 melhores exemplos de conversão ou alteração da época usando o utilitário de data no Linux ou Unix:
1.
Converta a data em época, considerando o fuso horário: Por exemplo, para converter a data e a hora "1º de janeiro de 1970 12h00 EST" para a época em segundos, você usaria o seguinte comando:
```
$ data --data '1970-01-01 12:00:00 EST' +%s
```
Aqui, `date` é usado com a opção `--date` para converter uma string que representa data e hora no horário da época. ` +%s` formata a saída como o número de segundos desde 1º de janeiro de 1970, 00:00:00 UTC.
Este comando geraria o seguinte horário de época:
```
3600
```
2.
Converta a época em data, considerando UTC: Por exemplo, para converter a época "1585233869" em uma data e hora no formato UTC, você usaria o seguinte comando:
```
$ data -ud@1585233869
```
Neste exemplo, a opção `-ud` é usada com o símbolo `@` para interpretar a época de `1585233869` como um carimbo de data/hora Unix em UTC.
Este comando geraria a seguinte data e hora:
```
Dom, 29 de março 18:24:29 UTC 2020
```
3.
Converta o horário da época em fuso horário local: Para converter a época "1585233869" em uma data e hora em um fuso horário específico, use `date -d @1585233869 -T "timezone"`, substituindo "timezone" pelo fuso horário desejado.
```
$ data -d @1585233869 -T "América/Nova_Iorque"
```
Isso exibiria:
```
Dom, 29 de março 13:24:29 EDT 2020
```
4.
Converter data em milissegundos de época (milissegundos desde a época): Para converter uma data como "1º de julho de 2020, 12h30" em milissegundos, use `date +%s%3N`, onde `+%s` são segundos desde a época e `%3N` acrescenta 3 dígitos para milissegundos .
```
$ data --data '1º de julho de 2020, 12h30' +%s%3N
```
Isso gera milissegundos de época:
```
1593630600992
```
5.
Converter milissegundos de época em data legível por humanos: Para converter milis de época, como 1593630600000, em uma string de data, use `date -d @epoch-millis +'%Y-%m-%d %H:%M:%S.%3N'`.
```
$ data -d @1593630600000 +'%Y-%m-%d %H:%M:%S.%3N'
```
Saída:
```
01/07/2020 12:30:00.000
```
6.
Obtenha a data e a hora atuais em formato legível por máquina: `date +%s%3N` exibe milissegundos de época, útil ao comparar duas datas.
```
$ data +%s%3N
```
Saída:
```
1593633240539
```
7.
Adicionar ou subtrair dias da época: `date -d @epoch-seconds +days` ajusta o horário da época pelo número especificado de dias. Por exemplo:
```
$ data -d @1593630600 +3 dias
```
Saída:
```
Qui, 4 de julho 12:30:00 EDT 2020
```
8.
Subtraia as datas para calcular a diferença: Para calcular a diferença entre duas datas, encontre seus segundos de época e subtraia. Por exemplo:
```
$ hora_fim=$(data +%s)
$ start_time=$(data -d "01/07/2019" +%s)
$ diferença_em_segundos=$((end_time - start_time))
```
9.
Adicionar ou subtrair intervalos de tempo: Para adicionar ou subtrair intervalos específicos, como 5 horas e 30 minutos de uma determinada época, use:
```
$ data -d @1593630600 +5 horas -30 minutos
```
Saída:
```
Sexta-feira, 2 de julho 12:00:00 EDT de 2020
```
10.
Contagem da data até evento futuro: Para determinar quanto tempo falta para uma data específica no futuro, converta ambas as datas relevantes em segundos de época e calcule a diferença. Por exemplo:
```
$ end_time=$(data -d "2021-12-25 00:00" +%s)
$ hora_inicial=$(data +%s)
$ segundos_até_Natal=$((horário_final - horário_inicial))
```
11.
Contar datas desde o evento passado: Da mesma forma, contar o número de dias desde um evento como um aniversário envolveria subtrair os segundos da época da data do evento da data atual:
```
$ aniversário=$(data -d "01/09/1999" +%s)
$ hora_atual=$(data +%s)
$ dias_desde_aniversário=$(( (hora_atual - aniversário)/(60*60*24) ))
```
12.
Gerar época aleatória: Para criar um carimbo de data/hora aleatório dentro de um intervalo de datas especificado, use o seguinte comando:
```
$ min_time=$(data -d "01/07/2019" +%s)
$ max_time=$(data -d "31/07/2020" +%s)
$ tempo_aleatório=$(shuf -i $min_time-$max_time -n1)
$ data -d @$ tempo_aleatório
```
13.
Converta intervalos de tempo legíveis em segundos: Para simplificar os cálculos de tempo, converta intervalos de tempo legíveis para segundos usando a calculadora `expr`:
```
$ segundos_5_horas=$(expr 5 \* 60 \* 60)
$ date +%s -d "agora - $seconds_5_hours segundos"
```
Isso gera a data/hora atual diminuída em 5 horas:
```
Sexta-feira, 9 de julho 15:02:20 EDT de 2021
```
Lembre-se, ao lidar com cálculos relacionados ao tempo, selecionar o fuso horário apropriado é crucial para garantir resultados precisos.