JAVA如何返回前一天,今天为Today="20090203",前一天为20090202

来源:百度知道 编辑:UC知道 时间:2024/09/23 20:35:25
若为“20090201”,则返回20090131,用到的方法为static String getYesterday(String Today);
下面这段代码对吗?不对该怎么写
public class a{
public static void main(String args[]){
a test=new a();
a.getYesterday(String Today);
}
public static String getYesterday(String Today){
int Yesterday=0;
int b=Integer.parseInt(String Today);
if(Today%10>1){
Yesterday=b-1;
System.out.println(Yesterday);
}
else if(Today%10<=1){
Yesterday=(b%10000-1)*100+(b/10000)*10000)+29;//(若有31天就加30,在开头再判断)
System.out.println(Yesterday);
}
}
}
忘了补充一句,不可以用java.util.date等其他提供算法的包,题是那么规定的,当时也也想到了用这个包

将日期变成毫秒数,然后减去24*60*60*1000,然后所得结果在转换成日期即可

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public static void main(String[] args) {
SimpleDateFormat date=new SimpleDateFormat("yyyyMMdd");
String taday="20090301";
try {
Date dataday=date.parse(taday);
Calendar cal = Calendar.getInstance();
cal.setTime(dataday);
cal.add(Calendar.DATE, -1);
String mydate=date.format(cal.getTime());
System.out.println(mydate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这样不是更简单吗

用Timestamp类
给你个例子:
Timestamp today = new Timestamp(System.currentTimeMillis());
Long oneDay = 24 * 60 * 60 * 1000L;
Timestamp lastDay = new Timestamp(today.getTime()-oneDay);
这样就得到当前时间的前一天。
如果前N天就用oneDay * n;
然后再format成你希望的格式 如:yyyy-MM-dd