Como eu subtraio 5 minutos de um timestamp Unix?

1

Eu tenho uma data em milissegundos desde o formato Unix epoch, como eu subtraio 5 minutos dela?

    
por Alexiel 22.09.2014 / 06:28

4 respostas

4

Suponha que seu timestamp esteja em uma variável timestamp e em milissegundos desde a época:

fiveminutesbefore=$((timestamp - 5 * 60 * 1000))

Isso usa expansão aritmética para subtrair 5 lotes de 60 (segundos em um minuto) lotes de 1000 (milissegundos em um segundo) de seu valor timestamp , dando um tempo cinco minutos mais cedo, como seria de esperar.

    
por 22.09.2014 / 06:35
2

5 minutos de 60 segundos de 1000 milissegundos cada dão 300000.

Você pode subtrair isso de uma variável que contenha a data atual em milissegundos usando $(( )) :

dd=$(($(date +'%s * 1000 + %-N / 1000000')))
ddmin5=$(($dd - 300000))
echo $ddmin5

O cálculo de milissegundos vem de esta resposta

    
por 22.09.2014 / 06:39
0

Existem muitas maneiras:

fiveminutesbefore=$[$timestamp - 5 * 60 * 1000]

ou

fiveminutesbefore='echo "$timestamp - 5 * 60 * 1000" | bc -l'

ou

fiveminutesbefore='echo "$timestamp" | python -c 'import sys; t=sys.stdin.read(); print int(t) - 5 * 60 * 1000''

etc ...

    
por 22.09.2014 / 12:19
-2

imprime sol solaris menos 10min

dt="$(date +%H:"$(( 'date +%M'-10))":%S)"
    
por 07.10.2016 / 23:29