2012-02-01 211 views
5

我有下面的代碼獲取當前日期:如何獲得前一個月的最後一天,在Javascript或JQuery的

var month=new Array(12); 
month[0]="January"; 
month[1]="February"; 
month[2]="March"; 
month[3]="April"; 
month[4]="May"; 
month[5]="June"; 
month[6]="July"; 
month[7]="August"; 
month[8]="September"; 
month[9]="October"; 
month[10]="November"; 
month[11]="December"; 

var d = new Date(); 
var curr_date; 
if (d.getDate() == 1) 
{ 
    curr_date = d.getDate(); 
} 
else 
{ 
    curr_date = d.getDate() - 1; 
} 

var curr_month = d.getMonth() + 1; //months are zero based 
var curr_year = d.getFullYear(); 
var message_day = curr_year + "_" + curr_month + "_" + curr_date; 
var sql_day = month[curr_month - 1].substring(0,3) + curr_date.toString() + curr_year.toString(); 

if (curr_date == "1") 
    { 
     document.write(sql_day + " " + message_day); 
    } 

這是偉大的獲取當前的一天,但現在我需要得到如果是新月的開始,則爲上個月的最後一天。

現在這將產生:

Feb12012 2012_2_1 

,但我需要的輸出是:

Jan312012 2012_1_31 

感謝

回答

14
var d=new Date(); // current date 
d.setDate(1); // going to 1st of the month 
d.setHours(-1); // going to last hour before this date even started. 

現在d包含了前一個月的最後日期。 d.getMonth()d.getDate()將反映它。

這應該適用於任何包含c time.h的api。見this

+0

謝謝,這工作得很好。 – 2012-02-01 18:15:05

1

就減一天的日:

var today = new Date(); 
var yesterday = new Date().setDate(today.getDate() - 1); 

如果「d吃「財產(月份的日期)是1,然後將其設置爲零會給你一個代表上個月最後一天的日期。你的代碼已經非常接近了;你可以只構造一個新的日期實例:

if (d.getDate() === 1) 
    curr_date = new Date().setDate(0).getDate(); 

事實上,你甚至不需要一個「如果」聲明:

curr_date = new Date().setDate(d.getDate() - 1).getDate(); 

,並且會爲當月任何一天的工作。

+0

由於某種原因,我沒有得到我期望的輸出:http://jsfiddle.net/gT6eZ/1/ – 2012-02-01 18:06:58

11

這完美的作品對我來說:

var date = new Date(); 
date.setDate(0); 

日期現在包含了前一個月的最後一天。

相關問題