Segundos, minutos e horas desde uma data

3

Eu gostaria de criar um script que informa quantos segundos, minutos e horas se passaram desde a data (muito parecido com o formato de comando +%s date ). Como posso subtrair a data atual com uma data específica? Por exemplo: quantos segundos, minutos e horas se passaram desde 4 de julho de 1776.

    
por Zanna 16.03.2017 / 18:42

2 respostas

4

Aqui está uma maneira de fazer isso:

time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))

define uma variável time que você pode usar da seguinte forma:

echo $time
-7595723059

O +%s informa date para formatar para seconds since 1970-01-01 00:00:00 UTC , o que ajuda a nos dar um ponto de partida para fazer as contas em segundos.

Agora também pode ser adicionado a um script com as mesmas variáveis.

:~$ time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
:~$ printf '%dh:%dm:%ds\n' $(($time/3600)) $(($time%3600/60)) $(($time%60))
-2109923h:-12m:-55s

Se você quiser anos: dias: horas: minutos: segundos desde então, seria o seguinte:

printf '%dy:%dd:%dh:%dm:%ds\n' $(($time/60/60/24/365)) $(($time/60/60/24%365)) $(($time/3600%24)) $(($time%3600/60)) $(($time%60))

O que lhe daria resultados como o seguinte:

:~$ time=$(($(date -d"1776-07-04 00:00:00" +%s) - $(date +%s)))
:~$ printf '%dy:%dd:%dh:%dm:%ds\n' $(($time/60/60/24/365)) $(($time/60/60/24%365)) $(($time/3600%24)) $(($time%3600/60)) $(($time%60))
-242y:-11d:-7h:-46m:-37s

Espero que isso ajude!

    
por Terrance 16.03.2017 / 19:06
1

Se você pode viver com uma dependência, a tarefa é elegantemente expressa usando dateutils :

$ datediff 1776-07-04T00:00:00 now -f '%H:%0M:%0S'
2111284:08:34

Disclaimer: Eu sou o autor do pacote.

    
por hroptatyr 12.05.2017 / 06:12