2013年4月1日 星期一

日期加減計算

最近在Coding的過程經常使用到日期運算,

網路上的日期計算也有不少範例,

在此分享一個自己寫的method,

有需要的人就參考看看吧!~





import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TimeMethod {
 public String add(String date, String type, int count) {
  /*
   * 增加時間add(String 日期,String D/M/Y 或 d/m/y 日/月/年,int 數量)
   * 
   * 日期格式 yyyy/MM/dd or yyyy-MM-dd or yyyy MM dd
   * 
   * 以yyyy/MM/dd傳入 則傳回yyyy/MM/dd 以此類推
   */
  String result = "", split = "";// 分隔符號
  String[] dates = null;
  String[] splits = { "/", "-", " " };// 可以自行增加會用到的分隔符號
  try {
   for (String period : splits) {
    if (date.indexOf(period) != -1) {
     dates = date.split(period);
     split = period;
    }
   }
   //設定輸出日期格式
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy" + split + "MM"
     + split + "dd");
   
   //檢查日期格式是否合法
   sdf.setLenient(false);
   Date dateTest=sdf.parse(date);
   
   //設定時間 注意月份對應是0~11
   Calendar cal = Calendar.getInstance();
   cal.set(Integer.parseInt(dates[0]), Integer.parseInt(dates[1])-1,
     Integer.parseInt(dates[2]));
   
   if (type.equalsIgnoreCase("d")) {
    cal.add(Calendar.DATE, count);
   } else if (type.equalsIgnoreCase("m")) {
    cal.add(Calendar.MONTH, count);
   } else if (type.equalsIgnoreCase("y")) {
    cal.add(Calendar.YEAR, count);
   } else {

   }
   
   result = sdf.format(cal.getTime());
  } catch(ParseException e){
   System.err.print("日期格式錯誤 "+date);
  
  } catch (Exception e) {
   System.err.print("時間增加錯誤 時間格式為" + date);
   e.printStackTrace();
  }
  return result;
 }
}

沒有留言:

張貼留言