0

+1如果日期是 ,我想添加sunday。下面的代码适用于休息日期。但是当我通过时,30 sept 2012我给了我1 Sept 2012而不是1 Oct 2012in 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

4

3 回答 3

1

演示

这样更有效率。您还需要在添加日期之后使用月份名称

请注意,您示例中的日期在我的国家/地区解析为星期六!!!

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;
}
于 2012-10-15T05:30:14.180 回答
0

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

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

于 2012-10-15T05:23:19.193 回答
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 "";
}
于 2012-10-15T05:27:44.947 回答