#SingleInstance Force

; 获取当前日期
CurrentDate := SubStr(A_Now, 1, 8)

FutureDate := 21250312

; ; 处理2月29日的特殊情况(如果当前是闰年2月29日,但100年后不是闰年)
; If (CurrentMonth = "02" && CurrentDay = "29")
; 	If (!((Mod(FutureYear, 4) = 0 && Mod(FutureYear, 100) != 0) || Mod(FutureYear, 400) = 0))
; 		FutureDate := FutureYear . "0228"


; 计算天数差
MsgBox % DaysDifference := DateDiff(CurrentDate, FutureDate, "Hours")


; 计算两个日期之间的差异(以天为单位)
DateDiff(Date1, Date2, Unit:="Days") {
  ; 转换为文件时间格式
  VarSetCapacity(SystemTime1, 16, 0)
  , NumPut(SubStr(Date1, 1, 4), SystemTime1, 0, "UShort")
  , NumPut(SubStr(Date1, 5, 2), SystemTime1, 2, "UShort")
  , NumPut(SubStr(Date1, 7, 2), SystemTime1, 6, "UShort")
  , DllCall("SystemTimeToFileTime", "Ptr", &SystemTime1, "Ptr*", FileTime1)
  , VarSetCapacity(SystemTime2, 16, 0)
  , NumPut(SubStr(Date2, 1, 4), SystemTime2, 0, "UShort")
  , NumPut(SubStr(Date2, 5, 2), SystemTime2, 2, "UShort")
  , NumPut(SubStr(Date2, 7, 2), SystemTime2, 6, "UShort")
  , DllCall("SystemTimeToFileTime", "Ptr", &SystemTime2, "Ptr*", FileTime2)

  SecondsPerDay := 60 * 60 * 24
  TimeDiff := (FileTime2 - FileTime1) / 10000000

  If (Unit = "Days")
    Return Round(TimeDiff / SecondsPerDay)
  Else If (Unit = "Hours")
    Return Round(TimeDiff / 3600)
  Else If (Unit = "Minutes")
    Return Round(TimeDiff / 60)
  Else If (Unit = "Seconds")
    Return Round(TimeDiff)
}

/*
; 计算两个日期之间的差异(以小时为单位)
DateDiff(Date1, Date2) {
  VarSetCapacity(SystemTime1, 16, 0)
  , NumPut(SubStr(Date1, 1, 4), SystemTime1, 0, "UShort")
  , NumPut(SubStr(Date1, 5, 2), SystemTime1, 2, "UShort")
  , NumPut(SubStr(Date1, 7, 2), SystemTime1, 6, "UShort")
  , DllCall("SystemTimeToFileTime", "Ptr", &SystemTime1, "Ptr*", FileTime1)
  , VarSetCapacity(SystemTime2, 16, 0)
  , NumPut(SubStr(Date2, 1, 4), SystemTime2, 0, "UShort")
  , NumPut(SubStr(Date2, 5, 2), SystemTime2, 2, "UShort")
  , NumPut(SubStr(Date2, 7, 2), SystemTime2, 6, "UShort")
  , DllCall("SystemTimeToFileTime", "Ptr", &SystemTime2, "Ptr*", FileTime2)
  Return (FileTime2 - FileTime1) // 10000000 // 3600
}
*/

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。