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"
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
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
Tags date shell-script