/* 此DateCalc()函数通过以下方式计算任何StartDate的新日期 提供 "年"、"月 "和/或 "日"(+ 或-)作为参数。 https://jacks-autohotkey-blog.com/2021/04/01/calculating-dates-in-autohotkey-by-adding-years-months-and-or-days/ 使用Floor()和Mod()函数来计算月份和年份。 https://jacks-autohotkey-blog.com/2021/04/12/fake-math-tricks-using-the-floor-and-mod-functions-autohotkey-tips/ 2021年8月18日,当计算月份的天数少于起始月份时,添加了有效日期测试。 */ ; 对有效日期进行强制测试 起始日期 := 21000331 年 := 02 月 := 03 日 := 05 if 起始日期 is Date 新的日期 := DateCalc(起始日期, 年, 月, 日) else { MsgBox, 不是一个有效的开始日期! Return } FormatTime, Start , %起始日期%, LongDate FormatTime, New , %新的日期%, LongDate MsgBox,, DateCalc, % Start "`r`r累加:`r`t年:" 年 "`r`t月:" 月 "`r`t日:" 日 "`r`r" New DateCalc(Date="", Years=0, Months=0, Days=0) { If Date= Date := A_Now Months := SubStr(Date,5,2)+Months , CalcYears := Floor(Months/12) + Years , CalcMonths := Mod(Months,12) If (CalcMonths <= 0) CalcYears := CalcMonths = 0 ? CalcYears-1 : CalcYears , CalcMonths := CalcMonths + 12 NewDate := Substr(Date,1,4)+CalcYears . Format("{:02}", CalcMonths) . Substr(Date,7,2) /* ; Check for valid date FormatTime, TestDate, %NewDate%, ShortDate While !TestDate { NewDate := Substr(Date,1,4)+Years . Format("{:02}", Months) . Substr(Date,7,2)-A_Index FormatTime, TestDate, %NewDate%, ShortDate } */ ; 检查三种可能的月份长度的有效日期 Loop, 3 { if NewDate is not Date NewDate := Substr(Date,1,4)+Years . Format("{:02}", Months) . Substr(Date,7,2)-A_Index Else Break } NewDate += Days , Days Return NewDate }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)