本文中的代码不一定能适应所有种类的Windows系统

请自行测试后再做出结论,你可以在评论区留言



代码内容

# Usage: call :datecounter <Date 1> <Date 2>
# Example: call :datecounter 2021-3-5 2024-8-3

call :datecounter 2020-9-1 2022-11-29
echo %datecount%
pause&exit

:datecounter
for /f "delims=" %%a in ('powershell -NoProfile -c "[Math]::Abs(((Get-Date "%1")-(Get-Date "%2")).Days)"') do (set "datecount=%%a")
goto :eof

:datecounter将被定义为计算函数
%datecount%将被定义为计算结果

需要注意的是,这样计算的是日期 1日期 2之间有几天,不要搞混
例如,3月27日到3月30日之间有2天(28,29),而不是3(28,29,30)天或4天(27,28,29,30)

如果你的电脑开机后第一次运行PowerShell命令,那么以上代码开机后第一次运算时会有一点延迟

可能的Q&A

Q: 为什么调用PowerShell而不是全部由批处理计算?
A: 因为这样更简单,也方便调整和扩充

Q: 如果第一个日期比第二个日期小不应该是负数吗?
A: [Math]::Abs转成绝对值了

Q: 09-01和9-1都可以吗
A: 是的

Q: goto :eof是做什么的
A: 返回到call :datecounter 2020-9-1 2022-11-29后面

Q: 如果我用不了[Math]::Abs怎么办
A: 请评论留言你的具体系统版本,如果评论没有正常加载,请前往此博文的Github Issues页面