Adicione segundos a uma determinada data no bash

6

Eu tenho uma data completa mais horas e minutos. Eu gostaria de adicionar um número de segundos e exibir o resultado como uma data "day.month.ano hora: minuto".

"date" não parece ser capaz de adicionar segundos a uma determinada data.

    
por Markus 21.01.2014 / 16:53

2 respostas

11

Na verdade, o comando GNU date (que é a implementação padrão no Ubuntu) pode adicionar offsets de data diretamente - por exemplo, para adicionar 3662 segundos (1h, 1min, 2s) a uma determinada data

$ date '+%d.%b.%Y %T' --date="2012-06-13 09:16:16 EDT + 3662 seconds"
13.Jun.2012 10:17:18

No entanto, alguns cuidados são necessários com fusos horários e horário de verão - uma opção mais segura é provavelmente converter o tempo original em segundos desde o início da época e adicionar o deslocamento desejado antes de converter de volta ao formato desejado, por exemplo

$ secs=$(date +%s --date="2012-06-13 09:16:16")
$ date '+%d.%b.%Y %T' --date="@$((secs + 3662))"
13.Jun.2012 10:17:18
    
por steeldriver 21.01.2014 / 17:38
2

Assim:

$ date +%x.%H:%M:%S:%N
01/21/2014_16:02:07:422856522

Ele mostra dados dos EUA para mim, mas veja a data do homem para obter mais refinamentos. As 2 opções interessantes:

%N     nanoseconds (000000000..999999999)
%S     second (00..60)

E se você quiser usar o formato padrão de ano, mês e dia:

$ date +%Y.%m.%d_%H:%M:%S:%N
2014.07.21_16:07:52:641771706
    
por Rinzwind 21.01.2014 / 17:04