如何解决如何修复lua的lgi中的时区/ dst?
情况
在我看来我的时区配置正确,因为
[nix-shell:~]$ date +"%T %Z"
19:49:07 CET
我能达到我的期望。
但是在lua的lgi库中,我似乎使用的是夏时制,而普通的lua函数会遵循系统设置:
[nix-shell:~]$ lua
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org,PUC-Rio
> for k,v in pairs(os.date("*t")) do print(k,v) end
isdst false
sec 31
min 51
month 11
day 12
hour 19
yday 317
wday 5
year 2020
> glib=require"lgi".GLib
> return glib.DateTime.new_now(glib.TimeZone.new()):format("%F %T %Z")
2020-11-12 20:51:52 CEST
问题
我应该在哪里以及如何使lgi遵守我的系统时区/ DST设置?
背景
真棒WM使用lgi作为时钟小部件,所以我希望它是正确的。
解决方法
.new_local()
使用内部正确的TZ env变量调用.new()
。
https://developer.gnome.org/glib/stable/glib-GTimeZone.html#g-time-zone-new
return glib.DateTime.new_now(glib.TimeZone.new_local()):format("%F %T %Z")
只需确保正确设置了TZ环境变量。
https://www.cyberciti.biz/faq/linux-unix-set-tz-environment-variable
您会认为AwesomeWM会自动找出时区,但是谁知道... OS.date报告您已正确退出DST,所以这样做吗?
if os.date('*t').isdst then
wibox.widget.textclock( timezone='CEST' )
else
wibox.widget.textclock( timezone='CET' )
end
,
在我的特殊情况下,我的发行版在更新zoneinfo文件时确实犯了“错误”:
问题在于tzdata软件包确实更改了文件格式,但是应用程序(在我的情况下,WM如此出色)不支持新格式。
解决方案是从发行版中安装旧格式的新数据文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。