我想做这样一个方法
取得某一天的上月那天 比如2004/09/25 就得到2004/08/25
还有就是如果是2004/09/30 那么得到的就是2004/08/31 如果是2004/02/28 得到的就是2004/01/31 这个方法应该怎么写啊 请高手指教下`
取得某一天的上月那天 比如2004/09/25 就得到2004/08/25
还有就是如果是2004/09/30 那么得到的就是2004/08/31 如果是2004/02/28 得到的就是2004/01/31 这个方法应该怎么写啊 请高手指教下`
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test16 { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Date dt=new Date();
DateFormat df=new SimpleDateFormat("yyyy/MM/dd");
try {
dt=df.parse("2004/07/31");
System.out.println(dt);
Calendar calendar=Calendar.getInstance();
calendar.setTime(dt);
calendar.add(Calendar.MONTH, -1);
System.out.println(calendar.getTime());
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}}
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.io.*;
public class test {
public static void main(String[] args) {
SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd");
try {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入年:");
String year=reader.readLine();
System.out.println("请输入月:");
String month=reader.readLine();
System.out.println("请输入日:");
String day=reader.readLine();
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.YEAR,Integer.parseInt(year));
calendar.set(Calendar.MONTH,Integer.parseInt(month)-2);
calendar.set(Calendar.DATE,Integer.parseInt(day));
Date date=calendar.getTime();
System.out.println(format.format(date));
} catch (Exception ex) {
}
}
}
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar(Locale.CHINA);
calendar.set(Calendar.DAY_OF_MONTH, 28);
calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.println(calendar.getTime());
System.out.println(lastMonth(calendar.getTime()));
}
static Date lastMonth(Date date){
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.MONTH, -1);
if(day == maxDay){
calendar.set(Calendar.DAY_OF_MONTH, calendar.getMaximum(Calendar.DAY_OF_MONTH));
}
return calendar.getTime();
}
}
should be:
==============
public class C {
public static void main(String[] args) {
Calendar calendar = new GregorianCalendar(Locale.CHINA);
calendar.set(Calendar.DAY_OF_MONTH, 31);
calendar.set(Calendar.MONTH, Calendar.OCTOBER);
System.out.println(calendar.getTime());
System.out.println(lastMonth(calendar.getTime()));
}
static Date lastMonth(Date date){
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.MONTH, -1);
if(day == maxDay){
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
}
return calendar.getTime();
}
}
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.io.*;public class lastMonthToday {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("请输入年月日,格式例如2007/08/30");
String datetime = reader.readLine(); Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Integer.parseInt(datetime.substring(0,4)));
calendar.set(Calendar.MONTH, Integer.parseInt(datetime.substring(5,7))-2);
calendar.set(Calendar.DATE, Integer.parseInt(datetime.substring(8,10)));
if(calendar.getMaximum(calendar.DAY_OF_MONTH)>Integer.parseInt(datetime.substring(8,10))){
calendar.set(Calendar.DATE, calendar.getMaximum(calendar.DAY_OF_MONTH));
}
Date date = calendar.getTime();
System.out.println(format.format(date));
} catch (Exception ex) { } }
}