15 min intervalo arredondado parâmetro como hora inicial e final em um formato especificado

0

Eu queria passar parâmetros em um script de shell que chama um programa java ...

Por exemplo, a hora atual é 2011: 02: 23 01:05, então eu preciso andar para o horário inteiro mais próximo, como 1:00 (parâmetro starttime para o programa java) se for 1:05 e 1:15 (parâmetro de hora final para o programa java) os timestamps abaixo que eu queria passar dinamicamente para um programa java com base na hora atual.

Exemplo de parâmetro (intervalo de 15 minutos) para passar para o programa java via shell script.

java 2011:02:23 01:00 (start time) 2011.02.23 01:15 (end time)
java 2011.02.23 01:15 (starttime) 2011.02.23 01:30 (end time)

Posso? ou existe alguma maneira de gerar a data com o tempo no formato acima especificado no unix?

Nota: Esta data: obter o intervalo atual de 15 minutos não servir ao meu propósito.

    
por RamPrasad G 31.08.2018 / 02:20

1 resposta

0

Você pode obter o número de minutos múltiplo de 15 abaixo dos minutos atuais (ou minutos dados no primeiro parâmetro) com:

a=$(date date -d "2011-02-23 01:05" +%-m)        # need only minutes.
a=${1:-"$a"}                   # or use the value from the first parameter.
a=${a#0}                       # remove one optional leading zero to
                               # avoid issues with 08 and 09.
b=$((a-a%15))                  # Round down to a 15 minutes multiple.
c=$((b+15))                    # end time

echo "$b $c"

Se você precisar de uma string de data completa, use:

$ printf 'java %s%02d\n' "$(date -d "2011-02-23 01:05" +"%Y:%m:%d %H:")" "$b"
java 2011:02:23 01:00

Ou, no bash:

$ printf -v a '%(%s)T\n' -1
$ printf '%(java %Y-%m-%d %H:%M:%S)T\n' "$(( a - a % (60*15) ))"
java 2018-08-30 22:45:00
    
por 31.08.2018 / 03:08