Incremento de data e hora por hora ou min

1

Estou trabalhando em um script que leva a data inicial e a data final como parâmetros. Preciso incrementar a data de início por hora até a meia-noite e a data aumentar em um. A data de início e a data de término podem se estender por vários meses. Então, minha ideia é aproveitar a função de data e encontrei tantas postagens que cobrem isso. No entanto, não estou obtendo resultados corretos. Por exemplo:

$ date -d "1999-05-20 23:00:00 +10 min"
Thu, May 20, 1999  9:01:00 AM

$ date -d "1999-05-20 00:00:00 +1 hour"
Wed, May 19, 1999  8:00:00 PM

Como você pode ver, os valores retornados estão todos desativados. Não tenho certeza de onde estou fazendo errado. Eu também gostaria de formatar o datetime retornado como segue, mas sem nenhum sucesso:

$ date -d "1998-12-31 23:00:00 +0.5 hour" +"%Y/%m/%d-%T"
date: invalid date ‘1998-12-31 23:00:00 +0.5 hour’

Caso alguém esteja interessado no meu pseudocódigo de script:

 While Start_date != End_Date :
    Do some stuff here
    Start_date = Start_date + 1 hour
    
por KMC 04.10.2018 / 18:28

2 respostas

0

Como apontado por Stéphane Chazelas, o problema é causado pelo sinal + antes da hora porque sinaliza fuso horário em vez de hora.

Então, em vez de:

$ date -d "1999-05-20 00:00:00 +1 hour"

Use isto:

$ date -d "1999-05-20 00:00:00 1 hour"
    
por 09.10.2018 / 15:14
0

Parece funcionar no meu Ubuntu 18.04 quando preenchemos o delta:

date -d "-10min 1999-05-20 23:00:00"
Do 20. Mai 22:50:00 CEST 1999
    
por 04.10.2018 / 19:58