2014-04-15 24 views
34

Tôi có kịch bản sau đó trở lại vào ngày tiếp theo:JavaScript, lấy ngày vào ngày hôm sau

function today(i) 
    { 
     var today = new Date(); 
     var dd = today.getDate()+1; 
     var mm = today.getMonth()+1; 
     var yyyy = today.getFullYear(); 

     today = dd+'/'+mm+'/'+yyyy; 

     return today; 
    } 

Bằng cách sử dụng này:

today.getDate()+1; 

Tôi nhận được vào ngày hôm sau của tháng (ví dụ hôm nay sẽ nhận được 16).

Vấn đề của tôi là điều này có thể là vào ngày cuối cùng của tháng, và do đó kết thúc trở 32/4/2014

Có cách nào tôi có thể nhận đúng ngày đảm bảo cho ngày hôm sau ?

+0

http://stackoverflow.com/questions/1160827/javascript-get-next-day-of-a-string – dikesh

Trả lời

48

Bạn có thể sử dụng:

var tomorrow = new Date(); 
tomorrow.setDate(today.getDate()+1); 

Ví dụ, kể từ khi có 30 ngày trong tháng Tư, các mã sau sẽ đưa ra 01 tháng năm:

var day = new Date('Apr 30, 2000'); 
console.log(day); // Apr 30 2000 

var nextDay = new Date(day); 
nextDay.setDate(day.getDate()+1); 
console.log(nextDay); // May 01 2000  

Xem fiddle.

+7

Tôi không biết liệu nó có hiệu quả hay không, nhưng nó có thể được đơn giản hóa bằng cách sử dụng 'tomorrow.setDate (tomorrow.getDate() + 1);' –

+0

Cách tiếp cận này sẽ không cập nhật tháng.Vì vậy, nó sẽ vẫn trở lại vào tháng Tư nếu bạn yêu cầu tháng, trong ví dụ – marimaf

+0

@marimaf - Cách tiếp cận này cập nhật tháng. Ví dụ của ông là một chút chiến thắng vì nó phụ thuộc vào nó là cùng tháng như khi ông đã thực hiện câu trả lời này (tôi chỉ cần cập nhật để sửa chữa điều đó) nhưng cách tiếp cận hoạt động. – BryanGrezeszak

0

Sử dụng đối tượng Ngày đảm bảo điều đó. Đối với ví dụ như nếu bạn cố gắng tạo April 31st:

new Date(2014,03,31)  // Thu May 01 2014 00:00:00 
+2

Lưu ý rằng các chữ số bắt đầu bằng "0" là bát phân và đã không được chấp nhận. Vì vậy, mã này có thể gây ra lỗi ở chế độ nghiêm ngặt. Và, những gì bạn đã viết là 03 thay vì 04 ... – tsh

+0

@tsh - Nó không được lập chỉ mục. Vì vậy, 3 là chính xác cho tháng tư. – BryanGrezeszak

19

Sao chép-dán từ đây Incrementing a date in JavaScript:

Ba lựa chọn cho bạn:

Sử dụng chỉ JavaScript của đối tượng Date (không thư viện):

var today = new Date(); 
var tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000)); 

Hoặc nếu bạn không ngại thay đổi ngày tại chỗ (thay vì tạo một ngày mới):

var dt = new Date(); 
dt.setTime(today.getTime() + (24 * 60 * 60 * 1000)); 

Chỉnh sửa: Xem thêm câu trả lời và Jigar của David bình luận dưới đây: var ngày mai = new Date(); tomorrow.setDate (tomorrow.getDate() + 1);

Sử dụng MomentJS:

var today = moment(); 
var tomorrow = moment(today).add('days', 1); 

(Ghi chú rằng add đổi các ví dụ bạn gọi nó về, chứ không phải là trở về một trường hợp mới, vì vậy today.add ('ngày', 1) sẽ sửa đổi hiện nay . đó là lý do tại sao chúng ta bắt đầu với một op nhân bản trên var ngày mai = ....)

Sử dụng DateJS, nhưng nó đã không được cập nhật trong một thời gian dài:

var today = new Date(); // Or Date.today() 
var tomorrow = today.add(1).day(); 

sử dụng tìm kiếm trong tương lai

+0

Vui lòng đánh dấu các trích dẫn như vậy! – Bergi

+2

nó sẽ được dễ dàng hơn và tốt hơn để đóng câu hỏi như trùng lặp hơn để c & p câu trả lời. – Bergi

+1

@Bergi đặc biệt là kể từ khi câu trả lời đã thay đổi kể từ khi nó được sao chép ... – Michael

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