You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot中Unix时间戳时区偏移问题求助

解决Gnuplot中Unix时间戳时区偏差问题

问题背景

使用以下Gnuplot脚本绘制CSV数据时,x轴显示的时间比实际时间晚1小时:

set y range [0:]

# Set timestamp format for x-axis
set xdata time
set timefmt "%s"  # 指定输入时间格式为Unix时间戳
set xlabel "Time"

set format x "\n%d/%m/%y\n%H:%M"  # 用\n换行显示日期和时间

set timestamp "\n%d/%m/%y\n%H:%M" at graph 0.5,0.02 font "Helvetica"

plot "C:/Users/dhaval_tarapra/Desktop/Code/2degree/Kalt_extracted_values.csv" using ($2):4 with lines title 'Your Data'

CSV中frame.time列的Unix时间戳(如1324055753)实际对应UTC+1时区的6:56,但图表显示为5:56——原因是Gnuplot默认将Unix时间戳解析为UTC时间,未自动转换到本地时区。

解决方案

方法1:手动添加时区偏移量

直接在绘图时给时间戳加上对应时区的秒数偏移(UTC+1对应3600秒),适用于所有Gnuplot版本:

plot "C:/Users/dhaval_tarapra/Desktop/Code/2degree/Kalt_extracted_values.csv" using ($2 + 3600):4 with lines title 'EVSE_MaximumVoltageLimit'

方法2:设置Gnuplot时区(版本≥5.0)

如果你的Gnuplot版本在5.0及以上,支持直接设置时区参数,无需修改时间戳:

set y range [0:]

# Set timestamp format for x-axis
set xdata time
set timefmt "%s"
set xlabel "Time"

# 设置为UTC+1时区,也可使用具体时区名称如"CET"
set time zone 1
# 或 set time zone "Europe/Paris"

set format x "\n%d/%m/%y\n%H:%M"
set timestamp "\n%d/%m/%y\n%H:%M" at graph 0.5,0.02 font "Helvetica"

plot "C:/Users/dhaval_tarapra/Desktop/Code/2degree/Kalt_extracted_values.csv" using 2:4 with lines title 'EVSE_MaximumVoltageLimit'

该方法会自动将UTC时间戳转换为指定时区的本地时间。

方法3:修改系统环境变量(全局生效)

在运行Gnuplot前,设置系统的TZ环境变量:

  • Windows:命令行执行 set TZ=GMT+1
  • Linux/macOS:终端执行 export TZ=Europe/Paris(替换为对应时区)
    之后启动Gnuplot,脚本无需修改即可正确显示本地时区时间。

内容的提问来源于stack exchange,提问作者DHAVAL TARAPRA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 15:19:52