为GNUplot创建标签时,从文本文件中读取,我将如何获得小时数的差异:两列中的分钟,每列包含一个H:M时间戳(例如23.42)。
例如,这会为现有标签创建两列的串联:
myDate(col1,col3)=sprintf("%s-%s",strcol(1),strcol(3))
是否可以修改它来进行日期数学运算得到类似的结果:
timeDiffLabel(col5,col6)=sprintf(do-some-math-here,strcol(5),strcol(6))
答案 0 :(得分:2)
要解析时间,请使用strptime
功能:
print strptime('%H:%M', '12:34')
这将打印45240.0
,这是从时间字符串中解析的秒数。
如果你像这样解析两列中的字符串,你可以减去这些值并用strftime
重新格式化结果:
timeDiff(c1, c2) = strftime('%k:%M', strptime('%H:%M', strcol(c2)) - strptime('%H:%M', strcol(c1)))
plot 'test.dat' using 0:0:(timeDiff(1,2)) with labels
这原则上有效,但仅限于积极的差异。如果差异是例如-1
,您将获得23
,因为str*time
函数适用于日期时间。
更复杂的解决方案仅使用实际格式的差异的绝对值,并为结果添加可选的-
:
timeDiff(c1, c2) = (diff = strptime('%H:%M', strcol(c2)) - strptime('%H:%M', strcol(c1)), (diff < 0 ? '-' : '').strftime('%k:%M', abs(diff)))
plot 'test.dat' using 0:0:(timeDiff(1,2)) with labels
所以,使用像
这样的测试文件12:34 23:54
13:45 11:44
2:33 1:11
你得到了