Gnuplot 日期限制(2038?)

问题描述 投票:0回答:1

我发现 gnuplot 中有一个罕见的限制,所以它似乎无法处理 2037 年之后的日期。这是我正在使用的代码:

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

这适用于 2037 年。尝试使用 2038 年会返回以下错误:

no datablock named $Data

2039 年等,代码返回日期

13/12/1901

有什么解决方案可以让我的代码正常工作吗?或者我是否必须使用其他工具创建 $Data 内容?哪一个?我可以使用 awk (gnuplot 支持)来做到这一点吗?

这个问题有什么解决办法吗?或者我必须使用其他工具创建 $Data 的内容?

更多信息:

  • 版本:
    gnuplot 5.0 patchlevel 5
  • 发行版:
    Debian 4.9.258-1
  • 内核:
    4.9.0-15-amd64
  • 拱门:
    x86_64
awk gnuplot
1个回答
0
投票

我不是 Gnuplot 专家,但认为这与仅处理 32 位整数的

for
循环有关。您可以通过执行以下操作来解决:

t = strptime(myTimeFmt,DateStart)
te = strptime(myTimeFmt,DateEnd)
while (t < te) {
    print strftime(myTimeFmt,t)
    t = t + SecsPerDay
}

这样我就可以正常进行迭代。

© www.soinside.com 2019 - 2024. All rights reserved.