批处理如何获取当前日期前一天的日期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理如何获取当前日期前一天的日期相关的知识,希望对你有一定的参考价值。
求一个批处理。。。需要达到效果:显示系统日期前一天的日期。。。。格式2008415这样的
使用下面的代码就可以得到前一天的日期:
@echo offrem 计算指定天数之前的日期
set DaysAgo=1
rem 假设系统日期的格式为yyyy-mm-dd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%
echo %DaysAgo%天的日期是%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
效果如下:
参考技术A 批处理做这样的事情很麻烦,你可以用cscript来实现,比如把下面的内容保存为a.js文件:var d=new Date();d.setTime(d.getTime()-24*3600*1000);
var s=''+d.getYear()+(d.getMonth()+1)+d.getDate();
WScript.echo(s);
那么批处理里面加下面这样一行就可以输出你的格式那样的昨天的日期:
cscript a.js本回答被提问者采纳
java 获取当前日期,应该如何操作呢
package util;import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 获取系统时间
*
*/
public class DateUtil
/* 日志对象 */
// private static Logger logger = Logger.getLogger(SystemUtil.class);
/* 获取年份 */
public static final int YEAR = 1;
/* 获取年月 */
public static final int YEARMONTH = 2;
/* 获取年月日 */
public static final int YEARMONTHDAY = 3;
/* 获取年月日,小时 */
public static final int YMD_HOUR = 4;
/* 获取年月日,小时,分钟 */
public static final int YMD_HOURMINUTE = 5;
/* 获取年月日,时分秒 */
public static final int FULL = 6;
/* 获取年月日时分秒 格式:yyyyMMddHHmmss */
public static final int UTILTIME = 7;
/**
* 根据指定时间格式类型得到当前时间
*
* @param type
* 时间类型
* @return String 字符串时间
*/
public static synchronized String getCurrentTime(int type)
String format = getFormat(type);
SimpleDateFormat timeformat = new SimpleDateFormat(format);
Date date = new Date();
return timeformat.format(date);
/**
* 返回当前系统时间的年月日
*
* @return
*/
public static synchronized String getCurrentTime()
SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
return timeformat.format(date);
/**
* 根据参数格式,格式化当前日期
* @param format
* @return
*/
public static synchronized String getDateString(String format)
SimpleDateFormat timeformat = new SimpleDateFormat(format);
Date date = new Date();
return timeformat.format(date);
/**
* 根据指定时间格式类型,格式化时间格式
*
* @param type
* 时间格式类型
* @return
*/
private static String getFormat(int type)
String format = "";
if (type == 1)
format = "yyyy";
else if (type == 2)
format = "yyyy-MM";
else if (type == 3)
format = "yyyy-MM-dd";
else if (type == 4)
format = "yyyy-MM-dd HH";
else if (type == 5)
format = "yyyy-MM-dd HH:mm";
else if (type == 6)
format = "yyyy-MM-dd HH:mm:ss";
else if (type == 7)
format = "yyyyMMddHHmmss";
else
throw new RuntimeException("日期格式参数错误");
return format;
public static int getYear(String dateString)
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try
date = dd.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.YEAR);
catch (Exception e)
throw new RuntimeException(e);
public static int getMonth(String dateString)
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try
date = dd.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.MONTH)+1;
catch (Exception e)
throw new RuntimeException(e);
public static int getDay(String dateString)
SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try
date = dd.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_MONTH);
catch (Exception e)
throw new RuntimeException(e);
public static Date StringToDate(String dateStr, String formatStr)
SimpleDateFormat dd = new SimpleDateFormat(formatStr);
Date date = null;
try
date = dd.parse(dateStr);
catch (ParseException e)
e.printStackTrace();
return date;
/**
* 当前日期和参数日期距离的小时数 日期格式:yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static double getHours(String date)
SimpleDateFormat timeformat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
try
Date d = new Date();
Date d1 = timeformat.parse(date);
long temp = d.getTime() - d1.getTime();
double f = temp / 3600000d;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
return f1;
catch (Exception e)
e.printStackTrace();
throw new RuntimeException(e);
public static void main(String a[])
try
int aa = getYear("2012-01-08");
System.out.println(aa);
catch (Exception e)
e.printStackTrace();
参考技术A new Date()即可
然后调用该对象的方法,就有年份月份日期,小时分钟秒钟,甚至毫秒 参考技术B import java.util.Date;
Date d = new Date();
以上是关于批处理如何获取当前日期前一天的日期的主要内容,如果未能解决你的问题,请参考以下文章