我有一个简单的gnuplot命令文件:
....
set xdata time
set timefmt "%s"
set format x "%H:%M"
....
其中x - timestamp列。
结果 - UTC格式的时间。我可以更改x轴的本地时间码吗?
答案 0 :(得分:5)
今天在文档中遇到过这个问题:
转换为秒和转换秒假定为通用时间(这是相同的 作为格林威治标准时间)。没有改变时间的规定 区域或夏令时。如果您的所有数据都指向同一时区 (并且都是白天或标准)你不需要担心这些 的东西。但如果绝对时间对您的申请至关重要,那么您将会这样做 需要自己转换为UT。
来自help time/date
答案 1 :(得分:5)
我今天刚刚遇到过这个问题。您无需更改格式,只需更改数据即可。如果data.txt包含UTC格式的时间戳,并且您希望在PDT中显示它们(距离UTC约7小时),只需使用:
plot 'data.txt' using ($1+(-7*3600)):2
从每个x值中减去7小时(以秒为单位)。
答案 2 :(得分:1)
参加聚会有点晚了,我没有足够的声誉积分来发表评论,但是为了补充安东尼和赫尔曼克的回答,这就是我用他们的信息来实现的方法:
command.gnuplot
中,假设第一个字段包含日期/时间,第二个字段包含Y轴的值: plot "inputfile" using ($1 - offset):2
gnuplot -e "offset=$(date +%s -d '1 Jan 1970')" command.gnuplot
通常,偏移量可以正常工作,因为gnuplot在内部将日期/时间解释为距纪元的秒数。我不知道"offset=$(date ...)"
的形式是否是bash专用的东西,但是您始终可以使用"offset=`date ...`"
来代替。
编辑- 我发现在处理DST /夏令时更改时,此方法不能很好地工作。我将偏移量calc更改为此,现在效果更好:
command.gnuplot
中,假设第一个字段包含日期/时间,第二个字段包含Y轴的值: plot "inputfile" using ($1 + offset):2
gnuplot -e "offset=$(echo "
日期+%z * 36" | bc)" command.gnuplot
这是如何工作的?
date +%z
以-0400
或类似的形式提供时区偏移,即Local_Time = UTC - 4 hours
。如果我们将其视为一个数字(-400),则偏移量(以秒为单位)为-400 / 100 * 3600 = -400 * 36。
请注意,这不适用于增量为30分钟的时区(印度?),但是我敢肯定,通过创建一些数学运算,您也可以解决。
答案 3 :(得分:0)
从bash的4.1版本开始,您可以避免为此使用派生到date
的分支:
printf -v tzoff "%(%z)T" -1
tzoff=${tzoff:0:1}$(( ( 10#${tzoff:1:2}* 3600 + 10#${tzoff:3:2}* 60 ) ))
一些样本:
TZ=Asia/Katmandu printf -v tzoff "%(%z)T" -1
echo $tzoff
+0545
tzoff=${tzoff:0:1}$(( ( 10#${tzoff:1:2}* 3600 + 10#${tzoff:3:2}* 60 ) ))
echo $tzoff
+20700
TZ=America/Chihuahua printf -v tzoff "%(%z)T" -1
echo $tzoff
-0700
tzoff=${tzoff:0:1}$(( ( 10#${tzoff:1:2}* 3600 + 10#${tzoff:3:2}* 60 ) ))
echo $tzoff
-25200
然后在创建$tzoff
文件时或通过将其添加到绘图命令文件中,将此.dat
添加到值中。
printf -v plotcmd 'plot \47file.dat\47 using ($1%s):2' $tzoff
echo "$plotcmd"
plot 'file.dat' using ($1-25200):2
答案 4 :(得分:0)
此处发布的代码段对我不起作用,但这似乎可以解决问题:
git pull origin master --allow-unrelated-histories