检查 lua 中的月份日期

我正在配置 Linux 上的 AwesomeWM 主题,遇到了这个问题。当然,我不是专业程序员,所以我想来这里寻求帮助。我一直在尝试检查月份日期是否为从 1 到 9 的数字,然后更改日历上的焦点数字的填充,但似乎不起作用。

if (os.time(%d) >= 1) and (os.time(%d) <= 9) then
    theme.calendar_focus_padding = dpi(5)
else
    theme.calendar_focus_padding = dpi(10)
end

我在一个完全不同的文件中(我的 rc.lua)得到了错误,我真的不知道为什么。如果有人了解,请看看下面的截图。

1

我能理解的是,它与我的 rc.lua 文件中的以下代码有问题:

client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)

我知道这很特别,但如果有人能帮忙,我会非常感激。

点赞
用户12110258
用户12110258

如@lhf所述,您的代码不是有效的Lua代码。 Lua参数可以是字符串,表,数字或null--没有针对模式的特殊处理(通常将其封装在字符串中,出于这个原因)

这段代码应该可以工作:

if (os.date("%d")>= 1) and (os.date("%d") <= 9) then
    theme.calendar_focus_padding = dpi(5)
else
    theme.calendar_focus_padding = dpi(10)
end

将模式封装在字符串中允许Lua词法分析器对其进行解析,这意味着代码将至少可以执行。 os.time 然后会解析函数调用中的 %d 来提供相关值,在本例中是月份的天数。

2021-07-01 18:17:28
用户11815852
用户11815852

对于这个问题,这个版本似乎可以解决:

if (os.date("%d") >= "1") and (os.date("%d") <= "9") then
    theme.calendar_focus_padding = dpi(5)
else
    theme.calendar_focus_padding = dpi(10)
end

然而,代码并不像它应该做的那样。我的意思是,尽管现在是七月的第二天(应该将 if 语句转换为 true 并执行 if 和 else 语句之间的所有内容,对吧?)。但是,它执行了 else 语句下面的所有内容(theme.calendar_focus_padding = dpi(10))。这是怎么回事?

编辑: 所以我想到了一个解决方案,我需要将 os.date() 转换为一个整数。我使用 tonumber() 函数来实现,并且现在我有了这个代码块,似乎可以工作:

day = tonumber(os.date("%d"))

if (day >= 1) and (day <= 9) then
    theme.calendar_focus_padding = dpi(20)
else
    theme.calendar_focus_padding = dpi(10)
end
2021-07-02 14:26:28