Eventuali duplicati:
What is the best way to determine the number of days in a month with javascript?Ottieni giorni in un mese specificato utilizzando JavaScript?
Dire che ho il mese come un numero e un anno.
Eventuali duplicati:
What is the best way to determine the number of days in a month with javascript?Ottieni giorni in un mese specificato utilizzando JavaScript?
Dire che ho il mese come un numero e un anno.
// Month is 1-indexed (January is 1, February is 2, etc).
function daysInMonth (month, year) {
return new Date(year, month, 0).getDate();
}
// July
daysInMonth(7,2009); // 31
// February
daysInMonth(2,2009); // 28
daysInMonth(2,2008); // 29
Di seguito assume un valore datetime valido e restituisce il numero di giorni del mese associato ... elimina l'ambiguità di entrambe le altre risposte ...
// pass in any date as parameter anyDateInMonth
function daysInMonth(anyDateInMonth) {
return new Date(anyDateInMonth.getYear(),
anyDateInMonth.getMonth()+1,
0).getDate();}
Genera errore quando lo chiamo: daysInMonth (new Date()). – CyberFox
Sì, basta cambiare '++ anyDateInMonth.getMonth()' a 'anyDateInMonth.getMonth() + 1' – rescuecreative
@rescuecreative, funzionerebbe in questo modo:' ++ (anyDateInMonth.getMonth()) '?? –
Date.prototype.monthDays= function(){
var d= new Date(this.getFullYear(), this.getMonth()+1, 0);
return d.getDate();
}
Da quanto ho capito, 'new Date (year, month, 0)' produrrà l'ultimo mese dell'ultimo giorno, quindi aggiungendo '+ 1' ai risultati dei parametri nei giorni del mese corrente. Non sto correggendo nulla qui. Sto cercando di essere sicuro di capire, e credo che la risposta di kennebec sia la risposta corretta. – Brent
@Brent hai capito bene. Anche questa funzione rispetta i mesi di Javscript essendo basata su 0 che è bella e comoda – Aides
Questa è la risposta corretta, non quella sopra. – Shawn
Un'altra possibile opzione sarebbe quella di utilizzare Datejs
Poi si può fare
Date.getDaysInMonth(2009, 9)
Anche se l'aggiunta di una libreria solo per questa funzione è eccessivo, è sempre bello conoscere tutte le opzioni che avete un basati 0 a vostra disposizione :)
ecco la funzione che usano in Datejs: return [31, ($ D.isLeapYear (year)? 29: 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] [mese] ; – CyberFox
in JavaScript mesi, quindi mentre questo sembra giusto è incoerente con altre funzioni javascript – Greg
Right. Quindi usa la mia funzione se stai analizzando l'input dell'utente e la funzione di soulscratch se stai usando l'input programmatico. –
Tranne che non funziona. new Date (2012, 5, 0) .getDate() restituisce 31. Ci sono solo 30 giorni a giugno. Idem per un sacco di altri mesi. http://jsfiddle.net/LVLd3/ rispetto al calendario corretto all'indirizzo http://www.timeanddate.com/calendar/ – SamGoody