先是写一个工具类,完成由Date-->String,String-->Date,Date-->Calendar,Calendar-->Date
的转化,并在此基础上衍生出Calendar-->String,String-->Calendar。至此便可以完成一般的对日期的操作(由String类型的传进去交由Calendar处理)然后再输出显示按照预期想要的格式的处理后的日期
(一)DateUtils.java
package cn.ldc.baseskill.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* @author : Tony
* @createTime :2011-4-6 下午08:37:08
* @class_name :DateUtils.java
*/
public class DateUtils {
//Date -->String
private static String dateToString(Date date,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
//String --->Date
private static Date stringToDate(String source,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
return sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
//Date-->Calendar
private static Calendar dateToCalendar(Date date){
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
return cal;
}
//Calendar-->Date
private static Date calendarToDate(Calendar cal){
return cal.getTime();
}
//Calendar --> String 用於計算結束后的顯示
static String calendarToString(Calendar cal,String format){
return dateToString(calendarToDate(cal),format);
}
//String -->Calendar 用於計算
static Calendar stringToCalendar(String source,String format){
return dateToCalendar(stringToDate(source,format));
}
}
在此基础上完成几个小操作
//根據任意一個日期得到它所在的星期
static int getWeek(String source,String format) throws ParseException{
Calendar cal = DateUtils.stringToCalendar(source, format);
return cal.get(Calendar.DAY_OF_WEEK)-1;
}
//今天N天以後的那一天的日期
static String getDay(int n){
Calendar cal = Calendar.getInstance();
return DateUtils.calendarToString(cal, "yyyy-MM-dd");
}
//获得距离指定日期n天前或后的那一天的日期
static String getSomeDay(String source,String format,int amount){
Calendar cal = DateUtils.stringToCalendar(source, format);
cal.add(Calendar.DATE, amount);
return DateUtils.calendarToString(cal, format);
}
调用以上三个函数输出结果:
3
2011-04-06
2010-04-04