`
bluenemo
  • 浏览: 176411 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【日期时间】批处理计算上个月最后一天的日期

阅读更多

【方案一】BAT + date.exe(GNU)

@echo off
rem 调用GNU for Win32的date.exe
set "gnuDate=C:/test/date.exe"
for /f %%a in ('%gnuDate% "+%%Y%%m01"') do (
    for /f %%h in ('%gnuDate% -d "%%a 1 days ago" "+%%Y-%%m-%%d"') do (
        set "DstDate=%%h"
    )
)
echo,%DstDate%
pause

 

【方案二】BAT + VBS

@echo off
>"%temp%/DateCalculate.vbs" echo strLastDate=DateAdd("d", -DatePart("d", Date), Date)
>>"%temp%/DateCalculate.vbs" echo strFmtDate=Right(Year(strLastDate),4) ^& Right("0" ^& Month(strLastDate),2) ^& Right("0" ^& Day(strLastDate),2)
>>"%temp%/DateCalculate.vbs" echo WScript.Echo strFmtDate
for /f %%a in ('cscript /nologo "%temp%/DateCalculate.vbs"') do (
    set "DstDate=%%a"
)
set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
echo,%DstDate%
pause

 

【方案三】BAT

@echo off
setlocal enabledelayedexpansion
rem 假设系统日期格式为yyyy-mm-dd
set "y=%date:~0,4%"
set "m=%date:~5,2%"
set /a "m=1!m!-101, m=m+(^!m)*12"
rem 上月是否2月或小月
set /a "f=^!(m-2), s=^!(m-4)|^!(m-6)|^!(m-9)|^!(m-11)"
rem 今年是否闰年
set /a "leap=^!(y%%4) & ^!^!(y%%100) | ^!(y%%400)"
rem 上月有!d!天
set /a "d=f*(28+leap)+s*30+(^!f&^!s)*31"
set /a "y1=y-^!(m-12)"
set "m=0!m!"
set "m=!m:~-2!"
set "d=0!d!"
set "d=!d:~-2!"
set DstDate=!y1!-!m!-!d!
echo,%DstDate%
pause

 

【方案四】BAT + Ritchie Lawrence 日期函数

@echo off
rem 假设系统日期格式为yyyy-mm-dd
set ThisYear=%date:~0,4%
set ThisMonth=%date:~5,2%
call :DateToDays %ThisYear% %ThisMonth% 01 ThisDays
set /a DstDays=%ThisDays%-1
call :DaysToDate %DstDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%
echo,%DstDate%
pause
goto :eof

:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF

 

分享到:
评论

相关推荐

    bat批处理版*精美日历*源代码+程序

    :: 原创:foxjl 更新:namejm, qzwqzw,foxjl :: 计算农历日期部分思路及算法来自"趣味东" :: 输入的日期格式为:年-月-日(-可以替换为:、/,可以混用) ...:: 08-01-13 增加推算农历日期的功能,会有一天左右误差。

    删除一段时间没有登入域的用户或计算机.txt

    如果你运行OldCmp时只加了-report选项,它会搜索你默认域中所有计算机密码老化日期大于90天的计算机对象,并且把结果生成为一个HTML报告。如果你的域非常大,并且里面有很多计算机账号,这条命令可能得花上一段时间...

    在windows中at命令的用法

    在重复出现下一天(例如,下个星期四)时,运行指定命令将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前...

    OldCmp

    如果你运行OldCmp时只加了-report选项,它会搜索你默认域中所有计算机密码老化日期大于90天的计算机对象,并且把结果生成为一个HTML报告。如果你的域非常大,并且里面有很多计算机账号,这条命令可能得花上一段时间...

    WinRAR_4.0.exe

    令是一个字符串(或单个的字母),命令 RAR 去执行一个相应的操作。开关被用来 改变 RAR 执行操作的方法。其它参数是压缩文件名和被压缩的文件或要从压缩文件 中被解压文件。 列表文件是一个包括处理的文件名的纯...

    delphi 开发经验技巧宝典源码

    0193 获得指定月的最后一天 127 0194 在指定的日期上加上3月 127 0195 实现倒计时功能 128 0196 判断指定年份是否为闰年 129 0197 调用系统设置日期对话框 129 0198 将秒数转化成hh:mm:ss格式 129 0199...

    delphi 开发经验技巧宝典源码06

    0193 获得指定月的最后一天 127 0194 在指定的日期上加上3月 127 0195 实现倒计时功能 128 0196 判断指定年份是否为闰年 129 0197 调用系统设置日期对话框 129 0198 将秒数转化成hh:mm:ss格式 129 0199...

    入门学习Linux常用必会60个命令实例详解doc/txt

    所以这个选项当然没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位使用者。 -F:在重启计算机时强迫fsck。 -time:设定关机前的时间。 -m: 将系统改为单用户模式。 -i:关机时显示系统...

    中文简体压缩软件RAR 6.0

    包含两个掩码,并且所有文件及匹配第一个掩码,也匹配第二个掩码, 第一个掩码 将拥有更高的优先权,即使它被放到第二个后面。例如,存在*.cpp 和 f*.cpp 掩码 的情况下,f*.cpp 拥有更高的优先权。 RAR ...

    C#编程经验技巧宝典

    122 <br>0205 如何使用正则表达式验证两位小数 122 <br>0206 如何使用正则表达式验证一年的12个月份 123 <br>0207 如何使用正则表达式验证一个月的31天 123 <br>0208 如何使用正则表达式验证数字...

    rar压缩软件.rar

    'l' 列出存档文件的属性、大小、日期、时间和名称,每个文件一行。如 果文件被加密,行以 * 号开始。 'lt' 以多行模式显示详细的文件信息。此信息包括文件校验和值、主机 OS、压缩选项和其他参数。 'lta' ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例202 计算程序运行时间 257 实例203 从控制台输入密码 258 9.4 Math类的使用 259 实例204 角度和弧度的转换 259 实例205 三角函数的使用 260 实例206 反三角函数的使用 261 实例207 双曲函数的使用 262 实例208 ...

    立方酒店管理系统(SQL三层)

    可以方便的切换到任何一天的预定房态盘,是否有预定信息一目了然; 可以预定任何时间的客房,超预定和占房冲突自动提示; 可以自动查询预定客人是否是历史客人,来店次数和消费金额,以便为老客户提供优惠和感情...

    立方酒店管理系统

    l 可以方便的切换到任何一天的预定房态盘,是否有预定信息一目了然; l 可以预定任何时间的客房,超预定和占房冲突自动提示; l 可以自动查询预定客人是否是历史客人,来店次数和消费金额,以便为老客户提供优惠和...

    计算机应用技术(实用手册)

    这里的IDE设备包括了IDE硬盘和IDE光驱,第一、第二组设备是指主板上的第一、第二根IDE数据线,一般来说靠近芯片的是第一组IDE设备,而主设备、从设备是指在一条IDE数据线上接的两个设备,大家知道每根数据线上可以接...

Global site tag (gtag.js) - Google Analytics