批处理计算前N个月第一天的日期
来源:互联网 发布:java培训靠谱吗 编辑:程序博客网 时间:2024/05/01 23:36
【方案一】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
0
上一篇:海量数据的删除策略
下一篇:在SQL Server 2005数据库中进行错误捕捉
相关热门文章
- 爱说谎的老师
- 辛巴布童装S8
- 辛巴布童装v1
- 抓住人心,才好商量----运营外...
- 抓住人心,才好商量----运营外...
- 10种启动故障解决方法(转)...
- 关于自动弹出网页的解决方法...
- Auto CAD 2007中文版 迅雷免费...
- 出现“high definition audio...
- 全国计算机一级考试试题...
- cpu %和load average是怎样的...
- 如何确定线程使用的端口...
- mysql整形数据类型插入0001数...
- weblogic集群下启动服务有一个...
- nagios pnp 报错
给主人留下些什么吧!~~
评论热议
- 【日期时间】批处理计算前N个月第一天的日期
- 批处理计算前N个月第一天的日期
- 【日期时间】批处理计算上个月最后一天的日期
- 计算N天前的日期
- pyshon实现一天前,一月前,一年前的日期计算
- 计算当前日期n月前的日期
- 计算N天前的日期的bat脚本
- 计算距离系统时间N天前的日期
- c语言计算一个日期的下一天后N天后的日期
- python计算,指定的日期,后n天,前n天是哪一天
- 计算给定日期的后一天日期
- 利用批处理bat获取系统日期前三天的日期
- 计算N天前的日期(不含星期六,日)
- select sysdate - interval '2' day from dual --计算N天前的日期
- python 获取n天前的日期列表、获取指定日期n天前的日期
- 【转】求N天前的日期
- Javascript获取N天前的日期
- 计算指定日期的前一天、后一天
- 博客已升级,请注意变更地址
- 逢3退1的Java算法(双向回环链表算法)
- PHP 时间格式化输出
- 海量数据的删除策略
- python idle 清屏问题的解决
- 批处理计算前N个月第一天的日期
- 在SQL Server 2005数据库中进行错误捕捉
- 会员注册时手机号码异步验证的JS代码
- Oracle 块大小(默认8KB)
- EVO ONE:打了个球
- Linux 查看OS系统块的大小(默认4096 byte)
- eclipse常用快捷方式
- 白话经典算法系列之五 归并排序的实现
- 解析json
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
万达旅游文化城
南昌万达文化旅游城
万达文化旅游城价格暴跌
万达旅游城
万达城主题乐园
万达中心
南昌万达茂
万达茂游乐园
合肥万达茂
南宁万达茂主题乐园
哈尔滨万达茂
青岛万达茂
南宁万达茂门票多少钱一个人
上海青浦万达茂
南京仙林万达茂招聘
南京万达茂房价
青浦区万达茂
万达茂二手房
合肥万达茂门票多少钱
青浦万达茂地址
南京万达茂公寓
万达茂是什么意思
万达茂南宁
南宁万达茂效果图
为什么叫万达茂
仙林万达茂
南宁万达茂房价
万达茂图片
万达茂房价
万达茂南京
南宁万达茂地址
南京仙林万达茂
南京万达茂公寓值不值得买
万达茂有什么好玩的
万达茂和万达的区别
万达货app
万达金融app
万达借款
万达贷款
万达贷怎么样
万达贷上征信吗