2010-09-09 7 views
2

J'essaye d'obtenir une gamme de mois pour insérer dans une requête de CAML, c.-à-d.: 2010-09-01 et 2010-09-30.Date de Javascript

J'ai utilisé le code suivant pour générer ces deux valeurs:

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

L'exécution de ce code:

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

génère les dates exactes (la politique d'entreprise nécessite IE7):

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

Cependant, lorsque je tente d'analyser le format ISO 8601 (pour la requête CAML), je et les mauvaises dates.

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 
--------------------------- 

Je ne suis pas autorisé à utiliser Datejs, malheureusement.

Répondre

5

Je pense que vous oubliez d'en ajouter une au mois (janvier est 0 en javascript)

+0

LOL! Merci - j'ai su soustraire 1 quand je construisais la date mais j'ai complètement oublié que j'avais besoin de la rajouter lors de la construction de ma ficelle. –