使用RRD在我的应用程序中,我试图找到一种方法来执行"rrdtool fetch">使用特定的时区。在我的情况下"欧洲/索菲亚">"+02:00">夏天"+ 03:00"从UTC。
获取此命令
rrdtool fetch test.rrd MAX -r 86400 -s -90d -e now
是否可以使用时区Europe/Sofia,需要在时间戳上增加两个小时?
如果可能的话,如果我们是在夏天会发生什么,会增加2或3小时吗?
在内部,rrdtool工作在unix中,因此它是与时区无关的。如果你使用'now',那么它将是当前时间,无论你在哪个时区。如果你给出一个时间,比如"03:00"然后,它将相对于系统定义的当前时区。
当显示时间时,例如在图形的x轴上,那么时区就变得重要了。
注意:查看rrdtool文档获取更多详细信息- https://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html
rrdtool使用系统时间库,因此它们控制使用的时区以及如何解释时区。在Linux下,您可以设置TZ
环境变量来选择一个时区,当将时间转换为x轴的本地格式时,或者当您给出像"13:00"这样的时间时,库将使用它。如果您没有设置任何内容,那么您将获得系统的默认值,无论它是什么。
TLDR -使用适合您操作系统的方法设置您的时区,当您指定时间时,rrdtool会尊重它。
请参阅这里的文档,说明可以在x轴定义中使用哪些strftime符号:https://oss.oetiker.ch/rrdtool/doc/rrdgraph_graph.en.html
请参阅此处了解可用于-s
和-e
的at样式时间规范的详细信息:https://oss.oetiker.ch/rrdtool/doc/rrdfetch.en.html#AT-STYLE_TIME_SPECIFICATION
需要注意的一点是,无论您在哪个时区,RRA桶都与午夜UCT对齐。如果你在欧洲,这并不能说明什么,但在新西兰,你可以看到"每日"计数在中午滚动。