Estou encontrando uma limitação rara no gnuplot, então parece que ele não funciona com datas posteriores ao ano 2037. Este é o código que estou usando:
myTimeFmt = '%d/%m/%Y'
DateStart = '01/01/2038'
DateEnd = '31/12/2038'
SecsPerDay = 86400
set print $Data
do for [t=strptime(myTimeFmt,DateStart):strptime(myTimeFmt,DateEnd):SecsPerDay] {
print strftime(myTimeFmt,t)
}
set print
print $Data
Isso funciona para o ano de 2037. Tentar com o ano de 2038 retorna o seguinte erro:
no datablock named $Data
Com o ano 2039 e assim por diante, o código retorna a data 13/12/1901
.
Existe alguma solução para o meu código fazê-lo funcionar? Ou terei que criar o conteúdo $Data com outra ferramenta? Qual deles? Posso fazer isso com o awk (suportado no gnuplot)?
Existe alguma solução para este problema? Ou terei que criar o conteúdo de $Data com outra ferramenta?
Mais algumas informações:
- Versão:
gnuplot 5.0 patchlevel 5
- Distribuição:
Debian 4.9.258-1
- Núcleo:
4.9.0-15-amd64
- Arco:
x86_64
Não sou especialista em Gnuplot, mas acho que tem a ver com
for
loops que funcionam apenas com valores inteiros. Você pode contornar fazendo algo como:Dessa forma, faço a iteração acontecer normalmente.
Caso contrário, você poderia reescrever algo como:
O que pode resultar em menos erros de arredondamento de ponto flutuante se você incrementar valores diferentes (por exemplo, se desejar incrementar 0,1 segundo, você encontrará coisas como A matemática do ponto flutuante está quebrada? ).