Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287509
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 452
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-22 17:07
个人简介

心态决定命运

文章分类

全部博文(73)

文章存档

2017年(21)

2016年(27)

2015年(21)

2014年(4)

我的朋友

分类: Windows平台

2015-01-14 11:13:38

前两天逛论坛看到一段批处理代码获取昨天日期,感觉非常精辟,特记录下来,代码如下:


@echo off

set/a D=1%date:~8,2%%%100-1,M=1%date:~5,2%%%100-!D,Y=%date:~0,4%-!M,M+=!M*12,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!D*

(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31)"

set M=0%M%&set D=0%D%

set yesterday=%Y%-%M:~-2%-%D:~-2%

echo %yesterday%

pause

rem 1%date:~8,2%%%100-1 当前日期减1
rem M=1%date:~5,2%%%100-!D 如果D为0,则M减1,否则M不变
rem Y=%date:~0,4%-!M 如果M为0,则Y减1,否则Y不变
rem M+=!M*12 如果M为0,则令M为12,否则M不变
rem "K=!(M-4)|!(M-6)|!(M-9)|!(M-11)" 如果M为4或6或9或11,令K为1,其他时候为0
rem D+=!D*(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31) 这里!D* :如果D为非0,则D不变,如果D为0,则D为(!(M-2)*(28+!(Y%%

4))+K*30+(!!(M-2)&!K)*31)
rem 而(!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31)中,如果M为4或6或9或11,则D为30;如果M为1或3或5或7或8或10或12时,D为31

;如果M为2时,若闰年D为29,若非闰年,D为28
 

阅读(2564) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~