2012-02-01 42 views
5

Tôi có đoạn code sau để có được ngày hiện tại:Làm thế nào để có được những ngày cuối cùng của tháng trước trong Javascript hoặc 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); 
    } 

này là rất tốt để nhận được ngày hiện tại, nhưng bây giờ tôi cần phải nhận được ngày cuối cùng của tháng trước nếu đó là ngày bắt đầu của tháng mới.

ngay bây giờ điều này sẽ tạo ra:

Feb12012 2012_2_1 

nhưng những gì tôi cần đầu ra là:

Jan312012 2012_1_31 

Cảm ơn

Trả lời

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. 

bây giờ d chứa ngày cuối cùng của tháng trước. d.getMonth()d.getDate() sẽ phản ánh.

Điều này sẽ hoạt động vào bất kỳ ngày api nào kết thúc tốt đẹp c time.h. Xem this

+0

Cảm ơn, điều đó đã hoạt động rất tốt. –

1

Chỉ trừ một từ ngày trong tháng:

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

Nếu "d ăn "tài sản (ngày-của-tháng) là 1, sau đó thiết lập nó bằng không sẽ cung cấp cho bạn một ngày đại diện cho ngày cuối cùng của tháng trước đó. Mã của bạn đã khá gần; bạn chỉ có thể xây dựng một ngày ví dụ mới:

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

Trong thực tế, bạn thậm chí không cần một "nếu" tuyên bố:

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

và rằng tôi sẽ làm việc cho bất kỳ ngày nào trong tháng.

+0

vì một lý do nào đó, tôi không nhận được kết quả mong đợi: http://jsfiddle.net/gT6eZ/1/ –

11

này hoạt động hoàn hảo cho tôi:

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

ngày bây giờ chứa những ngày cuối cùng của tháng trước.

Các vấn đề liên quan