我正在尝试获取要插入到 CAML 查询中的月份范围,即:2010-09-01 和 2010-09-30。
我使用以下代码生成这两个值:
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 查询)时,我得到了错误的日期。
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。
我认为你只是忘记在月份中加一(一月在 javascript 中是 0)
Tôi là một lập trình viên xuất sắc, rất giỏi!