2009-12-17 20 views

risposta

23

Questo vi darà ultimo giorno del mese in corso.

var t= new Date(); 
alert(new Date(t.getFullYear(), t.getMonth() + 1, 0, 23, 59, 59)); 
+1

Non c'è bisogno di due oggetti Date: 't.setMonths (t.getMonth() + 1, 0, 23, 59, 59 , 0) '. – RobG

35
function LastDayOfMonth(Year, Month) { 
    return new Date((new Date(Year, Month,1))-1); 
} 

Esempio:

> LastDayOfMonth(2009, 11) 
Mon Nov 30 2009 23:59:59 GMT+0100 (CET) 
+1

+1 ma imposta il tempo alle 23: 59: 59.999. Forse è meglio impostare i secondi su 59.000 quindi '... Month, 1)) - 1000)'. :-) – RobG

+2

Non riesco a immaginare perché vorresti lasciare 999 ms dal calcolo del range – jcollum

0
Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE)); 

Date lastDayOfMonth = cal.getTime(); 
+7

Questo è un javascript strano che hai ottenuto. – droope

0
var d = new Date(); 
m = d.getMonth(); //current month 
y = d.getFullYear(); //current year 
alert(new Date(y,m,1)); //this is first day of current month 
alert(new Date(y,m+1,0)); //this is last day of current month 
+0

Ho provato questo, e 'alert (new Date (y, m + 1,0));' ti dà l'ultimo giorno per il prossimo mese. – mickburkejnr

4
var d = new Date(); 
console.log(d); 
d.setMonth(d.getMonth() + 1); // set month as next month 
console.log(d); 
d.setDate(0); // get the last day of previous month 
console.log(d); 

Qui viene emesso dal codice di cui sopra:
gio 3 ottobre 2013 11:34:59 GMT + 0100 (GMT Daylight Time)
Sun 3 Novembre 2013 11 : 34: 59 GMT + 0000 (GMT standard Time)
gio 31 ottobre, 2013 11:34:59 GMT + 0000 (GMT standard Time)

+0

Puoi semplificarlo un po 'di più passando la data a 'setMonth' in questo modo:' d.setMonth (d.getMonth() + 1, 0) ' – Jared

1
var month = 1; // 1 for January 
var d = new Date(2015, month, 0); 
console.log(d); // last day in January 
1

A volte tutto quello che hai è una versione di testo del mese in corso, vale a dire: aprile 2017.

//first and last of the current month 
var current_month = "April 2017"; 
var arrMonth = current_month.split(" "); 
var first_day = new Date(arrMonth[0] + " 1 " + arrMonth[1]); 

//even though I already have the values, I'm using date functions to get year and month 
//because month is zero-based 
var last_day = new Date(first_day.getFullYear(), first_day.getMonth() + 1, 0, 23, 59, 59); 

//use moment,js to format  
var start = moment(first_day).format("YYYY-MM-DD"); 
var end = moment(last_day).format("YYYY-MM-DD"); 
Problemi correlati