代码之家  ›  专栏  ›  技术社区  ›  Nathan DeWitt

Javascript日期

  •  2
  • Nathan DeWitt  · 技术社区  · 15 年前

    我使用了以下代码来生成这两个值:

    var month = "10/2010";
    var monthArray = month.split("/");
    var startDate = new Date(monthArray[1], monthArray[0]-1, 1);
    var endDate = new Date(startDate);
    endDate.setMonth(startDate.getMonth()+1, startDate.getDate()-1);
    

    运行此代码:

    alert("month: " + month + 
          "\nstartDate: " + startDate.toDateString() + 
          "\nendDate: " + endDate.toDateString()); 
    

    ---------------------------
    Windows Internet Explorer
    ---------------------------
    month: 10/2010
    startDate: Fri Oct 1 2010
    endDate: Sun Oct 31 2010
    ---------------------------
    OK   
    ---------------------------
    

    然而,当我试图解析为iso8601格式(对于CAML查询)时,我得到了错误的日期。

    var endISO8601 = endDate.getUTCFullYear() + "-" + 
                     endDate.getUTCMonth() + "-" + 
                     endDate.getUTCDate() + "T19:59:00Z";
    alert("endDate: " + endDate.toDateString() + 
          "\nendISO8601: " + endISO8601);
    
    ---------------------------
    Windows Internet Explorer
    ---------------------------
    endDate: Sun Oct 31 2010
    endISO8601: 2010-9-31T19:59:00Z
    ---------------------------
    OK   
    ---------------------------
    

    很遗憾,我不允许使用Datejs。

    1 回复  |  直到 15 年前
        1
  •  6
  •   einarmagnus    15 年前

    我认为您只是忘记了在月份中添加一个(在javascript中一月是0)