Rainmeter日期时间减法失效:连续天数计数器始终显示0
Rainmeter连续天数计数器显示0的问题修复
你的计数器始终显示0,核心是两个错误:
1. 变量引用语法错误
Rainmeter中引用自定义变量必须使用#变量名#的格式,你在Calc公式里写的!StartDateTime是无效的,Rainmeter无法识别这个变量,导致计算时用了空值,结果自然为0。
2. 日期字符串无法直接参与数值计算
Now返回的是Unix时间戳(从1970年1月1日到当前时间的总秒数),但你定义的StartDateTime是字符串格式的日期(2024-02-07T17:30:00),字符串和数值直接相减会触发计算错误,最终返回0。
修正后的完整代码
[Rainmeter] Update=1000 [Variables] StartDateTime=2024-02-07T17:30:00 ; 新增:将字符串日期转换为Unix时间戳 [MeasureStartTimestamp] Measure=Time TimeStamp=#StartDateTime# TimeStampFormat=%Y-%m-%dT%H:%M:%S DynamicVariables=1 [MeasureStreak] Measure=Calc Formula=Floor((Now - MeasureStartTimestamp) / (24*3600)) DynamicVariables=1 [MeasureHours] Measure=Calc Formula=(Floor((Now - MeasureStartTimestamp) / 3600)) % 24 DynamicVariables=1 [MeasureMinutes] Measure=Calc Formula=(Floor((Now - MeasureStartTimestamp) / 60)) % 60 DynamicVariables=1 [MeterStreak] Meter=String MeasureName=MeasureStreak Text=Streak: [MeasureStreak] days, [MeasureHours] hours, [MeasureMinutes] minutes FontFace=Arial FontSize=12 FontColor=255,255,255,255 SolidColor=0,0,0,150 AntiAlias=1 Padding=5,5,5,5
修正说明
- 新增
MeasureStartTimestamp度量:用Time类型的度量,通过TimeStamp参数传入字符串日期,配合TimeStampFormat指定日期格式,将字符串转换为和Now一致的Unix时间戳。 - 修正所有Calc公式:把原来的
!StartDateTime替换为MeasureStartTimestamp,确保用时间戳数值进行计算,这样就能得到正确的时间差。
内容的提问来源于stack exchange,提问作者Fahad
相关产品推荐
相关产品推荐

