如何在 lua 的 lgi 中修复 timezone/dst?
How to fix timezone/dst in lua's lgi?
情况
在我看来,我的时区配置正确,因为
[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 遵守我的系统 timezone/DST 设置?
背景
lgi 被很棒的 WM 用于时钟小部件,所以我希望它是正确的。
.new_local()
使用正确的 TZ 环境变量调用 .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 报告说您正确地关闭了夏令时,那么这样做可以吗?
if os.date('*t').isdst then
wibox.widget.textclock( timezone='CEST' )
else
wibox.widget.textclock( timezone='CET' )
end
在我的特殊情况下,我的发行版在更新 zoneinfo 文件时确实犯了一个“错误”:
问题是 tzdata 包确实改变了文件格式,但应用程序(在我的例子中是很棒的 WM)不支持新格式。
分发的解决方案是安装旧格式的新数据文件。
情况
在我看来,我的时区配置正确,因为
[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 遵守我的系统 timezone/DST 设置?
背景
lgi 被很棒的 WM 用于时钟小部件,所以我希望它是正确的。
.new_local()
使用正确的 TZ 环境变量调用 .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 报告说您正确地关闭了夏令时,那么这样做可以吗?
if os.date('*t').isdst then
wibox.widget.textclock( timezone='CEST' )
else
wibox.widget.textclock( timezone='CET' )
end
在我的特殊情况下,我的发行版在更新 zoneinfo 文件时确实犯了一个“错误”:
问题是 tzdata 包确实改变了文件格式,但应用程序(在我的例子中是很棒的 WM)不支持新格式。
分发的解决方案是安装旧格式的新数据文件。