如何设置Rainmeter皮肤的倒计时每年自动重启循环?
Rainmeter 年度循环倒计时修改方案
1. 调整INI配置
删除或注释掉Variables段中固定年份的配置,不需要手动修改年份:
[Rainmeter] Update=1000 [Variables] Color=0,0,0 FontName=Franklin Gothic Heavy FontHeight=46 ; 仅保留月日时分秒配置,年份自动计算 ; toYear=2021 注释掉这行即可 toMonth=12 toDay=25 toHour=24 toMinute=0 toSecond=0 ReleaseText="0" ;Measures; [MeasureScript] Measure=script ScriptFile=#CURRENTPATH#countdown.lua TableName=Countdown month=#toMonth# day=#toDay# hour=#toHour# min=#toMinute# sec=#toSecond# fintext=#ReleaseText# ;Meters; [MeterLogo] Meter=Image ImageName=Xmas.png SolidColor=0,0,0,1 X=R Y=0 [MeterString] Meter=string MeasureName=MeasureScript X=555 Y=38 H=1 FontFace=#FontName# FontSize=#FontHeight# FontColor=#Color# StringStyle=BOLD Text=%1 AntiAlias=1 StringAlign=Center Group=Static [MeterTextTop] [MeterTextMiddle] Meter=String Text=Insert text X=308 Y=131 FontColor=0,0,0 StringStyle=BOLD FontSize=20 FontFace=Franklin Gothic Heavy AntiAlias=1 StringAlign=Center [MeterTextBottom] Meter=String Text= Hello! X=320 Y=190 FontColor=255,255,255 StringStyle=BOLD FontSize=20 FontFace=Franklin Gothic Heavy AntiAlias=1 StringAlign=Center
其余INI配置不需要改动。
2. 替换Lua脚本代码
原Lua逻辑为固定日期计算,修改后会自动判断目标日期是否已过,自动切换到下一年度的同一日期:
PROPERTIES = {month=0, day=0, hour=0, min=0, sec=0, fintext=""} local RELEASEDATE = {} local RELEASETEXT = "" function Initialize() -- 读取固定的月日时分秒配置 RELEASEDATE.month = PROPERTIES.month RELEASEDATE.day = PROPERTIES.day RELEASEDATE.hour = PROPERTIES.hour RELEASEDATE.min = PROPERTIES.min RELEASEDATE.sec = PROPERTIES.sec RELEASEDATE.isdst = true RELEASETEXT = PROPERTIES.fintext or "" end function GetTimeLeft() -- 获取当前时间和年份 local now = os.time() local currentYear = tonumber(os.date("%Y", now)) -- 先生成今年的目标日期 RELEASEDATE.year = currentYear local targetTime = os.time(RELEASEDATE) -- 如果今年目标日期已过,自动用明年的日期计算 if targetTime < now then RELEASEDATE.year = currentYear + 1 targetTime = os.time(RELEASEDATE) end -- 计算时间差 local dif = targetTime - now local daysLeft = math.floor(dif/60/60/24) -- 时间到后的显示逻辑,可自定义显示时长,当前设置为目标日期当天显示ReleaseText if dif <= 0 and dif > -86400 then return RELEASETEXT else return tostring(daysLeft) end end function GetStringValue() return GetTimeLeft() end
注:原脚本中
centerText函数在Rainmeter环境下无作用且会引发错误,已直接删除。
效果说明
配置完成后刷新皮肤,倒计时会自动按年度循环,不需要每年手动修改年份参数,可适用于圣诞节、生日等固定年度日期的倒计时场景。
内容的提问来源于stack exchange,提问作者Kellen
相关产品推荐
相关产品推荐

