我发现 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
我不是 Gnuplot 专家,但认为这与仅处理 32 位整数的
for
循环有关。您可以通过执行以下操作来解决:
t = strptime(myTimeFmt,DateStart)
te = strptime(myTimeFmt,DateEnd)
while (t < te) {
print strftime(myTimeFmt,t)
t = t + SecsPerDay
}
这样我就可以正常进行迭代。