是否有任何JavaScript方法可以复制Oracle的ADD_MONTH()功能

时间:2015-10-20 12:16:16

标签: javascript oracle date

1)Oracle的ADD_MONTHS示例(日期,1):

SELECT ADD_MONTHS('30-Nov-15', 3) FROM dual;

  

2016年2月29日00:00:00

2)JavaScript:

var date= new Date("Mon Nov 30 2015 00:00:00"); 
date.setMonth(date.getMonth() + 3);
  

2016年3月1日星期二00:00:00

是否有任何JavaScript方法可以复制Oracle的ADD_MONTH()功能?

2 个答案:

答案 0 :(得分:2)

如果你想在Oracle函数中实现相同的logik - 即对于“较短”月份你不会在下个月溢出,我想你需要自己做:

伪代码:

 myDay = date.getDate(); // save the date
 date.setMonth(date.getMonth() + 3);  // add months
 myNewDay = date.getDate();
 while  (myDay !=  myNewDay & myNewDay <= 3) {
    myNewDay = myNewDay -1 // go back one day
    date.setDate(myNewDay); // restore the
 }

因此,如果您在添加月份后的当月同一天结束,那么您已做好准备。 如果你得到一个月的不同日期,它将是1,2或3(月长的差异); 每天都要回去,直到你到月底为止。

这是我对Oracle算法的了解。 HTH。

答案 1 :(得分:1)

date.getMonth() 

返回上个月的日期而不是此月份日期。因此,要添加到正确的日期,请执行

date.setMonth(date.getMonth() + 2);