批处理获取昨天所属月的开始和结束时间
时间: 2023-09-08 11:10:57 浏览: 51
可以使用以下批处理代码来获取昨天所属月的开始和结束时间:
```
@echo off
rem 获取当前日期
set "today=%date%"
rem 将日期格式转换为 yyyy-mm-dd 的格式
for /f "tokens=1-3 delims=/" %%a in ("%today%") do set "today=%%c-%%a-%%b"
rem 计算昨天的日期
set /a "day=1%today:~-2%-100, month=1%today:~-5, month-=1, year=%today:~0,-6%"
if %month% equ 0 set /a "year-=1, month=12"
set /a "days=36525*(year+4716)/100/4-306001*(month+1)/10000*2+((month+1)*275/9+day-30)"
rem 将日期格式转换为 yyyy-mm-dd 的格式
set "yesterday=%year%-%month%-%days%"
rem 获取昨天所属月的开始和结束时间
for /f "tokens=1-3 delims=-" %%a in ("%yesterday%") do (
set "start=%year%-%month%-01 00:00:00"
set /a "last_day=30+(%%b==4 || %%b==6 || %%b==9 || %%b==11)+(%%b==2)*(-2+!(%%a%%4))"
set "end=%year%-%month%-%last_day% 23:59:59"
)
echo Yesterday: %yesterday%
echo Start time: %start%
echo End time: %end%
```
解释:
首先获取当前日期,然后将其转换为 `yyyy-mm-dd` 的格式。接着使用批处理中的算术运算和日期计算方式计算出昨天的日期。然后将其转换为 `yyyy-mm-dd` 的格式。
最后使用当前年月和昨天所属月的最后一天来计算昨天所属月的开始和结束时间。注意,月份的天数需要根据是否为闰年来判断。