2013年6月20日 星期四

日期比較、日期增加(減少)

在撰寫表單系統的時候,

常會需要在選擇日期的同時,

用jQuery去修改一些日期計算後的欄位,

像是共計幾天、幾小時等等,

以下分享一個自己寫的計算日期比較的方法,

需要注意的是日期參數的格式,

為使IE及FireFox都可相容,盡量使用yyyy/MM/dd的格式,避免用yyyy-MM-dd,


/**
 * 比較日期 
 * 返回相差之年、月、日、時、分、秒        有正負號的整數 
 *
 * 可接受日期格式 :
 * yyyy/MM/dd hh:mm:ss
 * yyyy/MM/dd hh:mm
 * yyyy/MM/dd hh:
 *
 * type:y M d h m s
 */
function dateDiff(start,end,type){
 var start1=new Date(Date.parse(start));
 var end1=new Date(Date.parse(end));
 var second=(start1-end1)/1000;
 var result;
 if(type=='y'){
  result=start1.getFullYear()-end1.getFullYear();
 }else if(type=='M'){
  result=start1.getMonth()-end1.getMonth();
 }else if(type=='d'){
  result=second/60/60/24;
 }else if(type=='h'){
  result= second/60/60;
 }else if(type=='m'){
  result= second/60;
 }else if(type=='s'){
  result= second;
 }
 result=parseInt(result,10);
 return result;
}

另外,在表單介面也常會用到增減日期的方法,

function如下,增加(減少)以正負數代入即可,
/**
 * 增加(減少)日期 幾天 ex. 2013-05-02 增加一天 return 2013-05-03
 * ex addDate('2013/02/01',-5) return 2013/1/27
 * 
 */
function addDate(date,day){
 var date1=new Date(Date.parse(date)).getTime();
 date1 = date1 + (day * 24 * 60 * 60 * 1000);
 date1 = new Date(date1);
 date1=date1.getFullYear()+"/"+(parseInt(date1.getMonth(),10)+1)+"/"+date1.getDate();
 return date1;
}

沒有留言:

張貼留言