You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:18:00