2010-09-09 24 views
2

我想獲得一個月的範圍插入CAML查詢,即:2010-09-01和2010-09-30。Javascript日期

我用下面的代碼來產生這兩個值:

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()); 

產生正確的日期(公司的政策要求IE7):

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

但是,當我嘗試解析ISO 8601格式(對於CAML查詢)時,我g等錯誤的日期。

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。

回答

5

我想你只是忘了給月份添加一個(javascript在1月是0)

+0

LOL!謝謝 - 我知道在創建日期時減去1,但完全忘記了在構建我的字符串時需要添加它。 – 2010-09-09 17:18:56