2012-06-13 41 views
6

Tôi biết một cách để làm trong java:Làm thế nào để có được ba tháng trước ngày trong javascript trong các định dạng như YYYYDDMM hiệu quả

Calendar c5 = Calendar.getInstance(); 
c5.add(Calendar.MONTH, -6); 
c5.getTime(); //It will give YYYYMMDD format three months ago. 

Có cách nào để làm điều này trong javascript. Tôi biết rằng tôi có thể sử dụng Ngày d = new Date(); phân tích nó và làm một số mã để có được định dạng. Nhưng bây giờ tôi không muốn làm phân tích cú pháp và nhận được ba tháng trước ngày.

+1

Chắc chắn bạn có thể sử dụng thư viện như [date.js] (http://www.datejs.com/), có lẽ khoảng 25kb nội dung bạn sẽ không sử dụng để làm điều gì đó mà 5 dòng JavaScript có thể thực hiện. – epascarello

+1

@epascarello Tôi thực sự muốn xem mã javascript 5 dòng của bạn với tất cả các trường hợp cạnh được đề cập;) – javaMan

Trả lời

17
var dt = new Date('13 June 2013'); 
dt.setMonth(dt.getMonth()-1) 

Sau đó, bạn có thể sử dụng đoạn mã này từ this answer để chuyển nó sang yyyymmdd

Date.prototype.yyyymmdd = function() { 
    var yyyy = this.getFullYear().toString(); 
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based 
    var dd = this.getDate().toString(); 
    return yyyy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0]); // padding 
    }; 

d = new Date(); 
d.yyyymmdd(); 

Something phải cẩn thận của. Nếu bạn đang ở ngày 31 tháng 3 và trừ đi một tháng, điều gì sẽ xảy ra? Bạn không thể nhận được ngày 31 tháng 2! Xem câu trả lời this để biết thêm chi tiết.

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