如何获取前一天的系统日期

需求:

因为一直在做数据备份,每天繁琐的备份及删除,着实很麻烦。而且有时候哪天忘记删除备份的数据,而磁盘已经满了,那么当天的数据无法完全备份。而又假如哪天数据刚刚没备份好,而服务器又出了问题,然而这种事偏偏发生了,杯具。

所以现在想写了一些批处理命令,让系统每天进行备份并删除一个星期之前的数据,这样即省事,而且又不会忘记,毕竟机器只要设定好了,就是完全按照我们的意愿去做事了。下面就来分享下这几天的成果,献丑了。

首先看下系统日期格式:

注意此时系统的短日期格式为:yy/MM/dd,用下面的代码就可以实现获取当前日期以前任何一天的日期了,并且可以在系统里创建一个以获取的日期为名字的文件夹以做备份。代码如下:(此代码我在windows7下做的测试)

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/skills/

@echo off

rem 计算指定天数之前的日期

set DaysAgo=7

rem 假设系统日期的格式为yy/MM/dd,一定要注意系统格式,不然可能出错

call :DateToDays %date:~0,4% %date:~4,2% %date:~6,2% PassDays

set /a PassDays-=%DaysAgo%

call :DaysToDate %PassDays% DstYear DstMonth DstDay

set DstDate=%DstYear%%DstMonth%%DstDay%

echo %DaysAgo%天前的日期是%DstDate%

set TargetDriver=C:\

rem  在C盘创建一个以获取的日前为名字的文件夹,如20120627

MD %TargetDriver%%DstDate%

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%)

rem 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文件即可使用。

另外:

假如日期格式为:yyyy-MM-dd,则上面第5行代码应该改为如下:

call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDay

测试过在XP下也有所改动,在server服务器里也会不大一样,所以想要做到举一反三,还是得看懂上面代码中一句的意思:

call :DateToDays %date:~0,4% %date:~4,2% %date:~6,2% PassDays

在cmd命令行里输入:date,会显示以上日期格式:

所以上面一句的大概意思就是:获取1-4位为年,5-6位为月份,7-8位为日,但有的日期格式中间的/或者-都会算一位,所以需要多试一下。

本文出自 “Robin's Home” 博客,请务必保留此出处http://winteragain.blog.51cto.com/1436066/911183

时间: 2024-09-19 08:18:18

如何获取前一天的系统日期的相关文章

如何禁止修改android手机系统日期和时间

问题描述 如何禁止修改android手机系统日期和时间 最近写了一个应用,需要记录当前时间和日期,为了避免用户手动设定系统的日期和时间,如何禁止用户修改系统的日期和时间?请各位大侠指点,谢谢! 解决方案 Calendar---android 中系统日期时间的获取android 手机系统日期及时间的读取android 中 系统日期时间的获取

date-shell脚本获取系统日期

问题描述 shell脚本获取系统日期 在命令行执行 date +%m%d 可以顺利得到 0724 但是在shell脚本中这么写显示的却是real 0m0.000suser 0m0.000ssys 0m0.000s 即便加上date +%m%d(``) 也还是显示的一样 我该怎么做才能在shell脚本中顺利获得系统当前日期 解决方案 shell中获取系统日期的前一天shell脚本获取系统相关信息 解决方案二: #!/bin/bashNOW=$(date +""%m-%d-%Y"

后台-请看下面代码 我用c# 获取到了 系统的安装日期 但是由于是服务器代码

问题描述 请看下面代码 我用c# 获取到了 系统的安装日期 但是由于是服务器代码 请看下面代码 我用c# 获取到了 系统的安装日期 但是由于是服务器代码 每次看到的都是服务器的 看不得客户端 现在想用js 获取 系统的安装日期 改怎么弄呢? 解决方案 获取客户端时间? var myDate = new Date(); 然后post到服务器. 解决方案二: C# FTP上传文件至服务器代码[转]C# FTP上传文件至服务器代码

批处理bat标准化获取当前系统日期的几种方法_DOS/BAT

操作系统不同,日期格式也可能不同: 星期二 2008-07-29 2008-07-29 星期二 07/29/2008 Tue Tue 07/29/2008   再考虑到中.英之外的其它语言的操作系统,日期格式的种类实在太多了. 要想标准化地获取当前系统日期2008-07-28,直接截取%date%变量的方法是不行的. [方案一]BAT + REG @echo off rem 无法保证在中.英之外的其它语言的操作系统上得到正确结果 for /f "delims=" %%a in ('re

解析android中系统日期时间的获取_Android

复制代码 代码如下: import    java.text.SimpleDateFormat;     SimpleDateFormat    formatter    =   new    SimpleDateFormat    ("yyyy年MM月dd日    HH:mm:ss     ");     Date    curDate    =   new    Date(System.currentTimeMillis());//获取当前时间     String    str 

select-怎么得到mysql系统日期年月与表格日期字段年月一致的数据总数?

问题描述 怎么得到mysql系统日期年月与表格日期字段年月一致的数据总数? 功能需求:本月到期保管箱数量. 疑 问:我想要获取userbox表格中endDate的年月与当前系统时间年月相同的数据个数.用的如下语句,但是找出来不对.(endDate是datetime类型.) select count(*) as count from UserBox where endDate="yyyy-MM"; 解决方案 那你就是要按照一个固定时间统计数据喽. 那就把endDate转换成固定时间,再嵌

LotusScript 判断更改系统日期格式

问题描述 由于Notes系统中所有的应用程式日期格式是"YYYY/MM/DD",但是系统大多数默认是"yyyy-m-d"我希望首先程序能判断出电脑的日期格式,如果不是"YYYY/MM/DD".1.能够断开连接并且关闭Notes客户端.2.最好能够直接将系统日期格式更改然后重启客户端.Notes是C/S模式的,8.5版本请问各位老大有没有什么解决方法啊. 解决方案 解决方案二:SubPostopen(SourceAsNotesuidatabase)

js获得当前系统日期时间的方法_javascript技巧

本文实例讲述了js获得当前系统日期时间的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <

php获取开始与结束日期之间所有日期的方法_php技巧

本文实例讲述了php获取开始与结束日期之间所有日期的方法.分享给大家供大家参考,具体如下: /** * 获取指定日期段内每一天的日期 * @param Date $startdate 开始日期 * @param Date $enddate 结束日期 * @return Array */ function getDateFromRange($startdate, $enddate){ $stimestamp = strtotime($startdate); $etimestamp = strtot