我发现 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 年等,代码返回 date 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 专家,但认为这与
for
仅处理整数值的循环有关。您可以通过执行以下操作来解决:这样我就可以正常进行迭代。
否则,您可以重写为:
如果您增加不同的值,这可能会导致更少的浮点舍入错误(例如,如果您想增加 0.1 秒,您会遇到诸如浮点数学是否损坏?之类的问题)。