在javascript中添加Date中的天数

时间:2012-10-15 05:13:26

标签: javascript date

如果日期为+1,我想添加sunday。下面的代码适用于其余日期。但是当我通过30 sept 2012时,我在1 Sept 2012中向我1 Oct 2012而不是dateMsg。代码有什么问题?请指导。我猜我在这个月的最后一个日期都会遇到同样的问题。如何在整个日期而不仅仅是当天加1?

var monthName=convertMnthNoToName(freeLookEndDt.getMonth()+1);

    if (freeLookEndDt.getDay()==0) {

      var date=new Date(freeLookEndDt.getFullYear(),freeLookEndDt.getMonth(),
      freeLookEndDt.getDate()+1);
      var newmonthName=convertMnthNoToName(date.getMonth()+1);
      var dateMsg = date.getDate() + '-' + monthName + '-' + freeLookEndDt.getFullYear();

      document.forms[0].flEndDt.value=dateMsg;

    }

和convertMnthNoToName()

function convertMnthNoToName(val)
{
    if(val==01 || val==1)
    {
      val1="Jan";
    }
    if(val==02 || val==2)
    {
      val1="Feb";   
    }
    if(val==03 || val==3)
    {
      val1="Mar";   
    }
    if(val==04 || val==4)
    {
      val1="Apr";   
    }
    if(val==05 || val==5)
    {
      val1="May";   
    }
    if(val==06 || val==6)
    {
      val1="Jun";   
    }
    if(val==07 || val==7)
    {
      val1="Jul";   
    }
    if(val==08 || val==8)
    {
      val1="Aug";   
    }
    if(val==09 || val==9)
    {
      val1="Sep";   
    }
    if(val==10)
    {
      val1="Oct";   
    }
    if(val==11)
    {
      val1="Nov";   
    }
    if(val==12)
    {
      val1="Dec";   
    }

    return val1;
}

其中freeLookEndDt = Sun Sep 30 00:00:00 UTC+0530 2012

3 个答案:

答案 0 :(得分:1)

DEMO

这更有效率。此外,您需要在添加日期之后取月份

请注意您的示例中的日期将解决到我所在国家/地区的星期六!

var monthNames ="Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(",")

if (freeLookEndDt.getDay()==0) {
  freeLookEndDt.setDate(freeLookEndDt.getDate()+1);  
  var dateMsg = freeLookEndDt.getDate() + '-' + monthNames[freeLookEndDt.getMonth()] + '-' + freeLookEndDt.getFullYear();
  document.forms[0].flEndDt.value=dateMsg;
}

或者如果你需要保持freeLookEndDate:

if (freeLookEndDt.getDay()==0) {
  var date = new Date(freeLookEndDt.getTime());
  date.setDate(date.getDate()+1);  
  var dateMsg = date.getDate() + '-' + monthNames[date.getMonth()] + '-' + date.getFullYear();
  document.forms[0].flEndDt.value=dateMsg;
}

答案 1 :(得分:0)

你定义newmonthName但使用monthName。因此它使用旧月份名称。 newmonthName应该已更改

你应该能够做freeLookEndDt.setDate(freeLookEndDt.getDate()+1)

答案 2 :(得分:0)

而不是

var date=new Date(freeLookEndDt.getFullYear(), freeLookEndDt.getMonth(),
                  freeLookEndDt.getDate()+1);

使用

var date = new Date();
date.setFullYear(freeLookEndDt.getFullYear());
date.setMonth(freeLookEndDt.getMonth());
date.setDate(freeLookEndDt.getDate()+1);

这样,您将在最后一步设置日期,而日期将重新计算存储的月份和年份以更正值。请注意,如果你有12月31日那年也可以改变。

此外,函数convertMnthNoToName可以修改为具有更紧凑的实现,并且还能够处理字符串输入值,例如“03”。

完整代码:

var monthName=convertMnthNoToName(freeLookEndDt.getMonth()+1);

if (freeLookEndDt.getDay()==0) {

    var date = new Date();
    date.setFullYear(freeLookEndDt.getFullYear());
    date.setMonth(freeLookEndDt.getMonth());
    date.setDate(freeLookEndDt.getDate()+1);
    var newmonthName=convertMnthNoToName(date.getMonth()+1);
    var dateMsg = date.getDate() + '-' + newmonthName + '-' + freeLookEndDt.getFullYear();

    document.forms[0].flEndDt.value=dateMsg;
}

/**
 * Converts month (1-based) to its string representation
 * @param {Number|String} val    Month index (from 1-January to 12-December)
 * @return {String}    String representation of month or empty string for invalid input parameter
 */
function convertMnthNoToName(val)
{
    val = parseInt(val); // string "01" will be converted to 1
    if(val>=1 && val<=12)
    {
        var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
        return monthNames[val-1];
    }
    return "";
}