2015-10-11 18 views
11

Tôi đang cố gắng thêm một năm vào ngày đến ngày. Tôi đang làm việc trong một hệ thống không cho phép bạn sử dụng JavaScript standard.Thêm năm vào ngày đến ngày

Ví dụ, để có được ngày todays tôi phải sử dụng:

javascript:now(); 

Tôi đã thử:

javascript:now(+1); 

Tôi chưa bao giờ thấy điều này trước đây, nhưng tôi cần thêm một năm để todays date ...

Có ai nhìn thấy ngày hiện tại theo cách này không? Và nếu vậy, làm thế nào tôi có thể thêm một năm?

+1

Bản sao có thể có của [Cách xác định một năm từ bây giờ trong Javascript] (http://stackoverflow.com/questions/8609261/how-to-determine-one-year-from-now-in-javascript) – rnevius

+0

Đây không phải là bản sao.Như tôi đã nói ở trên, không thể sử dụng phương pháp javascript chuẩn – Code

+2

Có thể hữu ích nếu bạn cung cấp cho chúng tôi một số thông tin chi tiết về hệ thống mà mã này được thực hiện. –

Trả lời

24

Bạn có thể tạo một đối tượng ngày mới với ngày todays sử dụng đoạn mã sau:

var d = new Date(); 
console.log(d); 
// => Sun Oct 11 2015 14:46:51 GMT-0700 (PDT) 

Nếu bạn muốn tạo ra một ngày trong một thời gian cụ thể, bạn có thể vượt qua các đối số ngày constructor mới

var d = new Date(2014); 
console.log(d) 
// => Wed Dec 31 1969 16:00:02 GMT-0800 (PST) 

Nếu bạn muốn sử dụng ngày và thêm năm, trước tiên bạn có thể tạo đối tượng ngày, truy cập các thuộc tính có liên quan và sau đó sử dụng chúng để tạo đối tượng ngày mới

var d = new Date(); 
var year = d.getFullYear(); 
var month = d.getMonth(); 
var day = d.getDate(); 
var c = new Date(year + 1, month, day) 
// => Tue Oct 11 2016 00:00:00 GMT-0700 (PDT) 

Bạn có thể đọc thêm về các phương pháp trên đối tượng trên ngày MDN

Date Object

+10

Không cần tạo hai đối tượng ngày. 'd.setFullYear (d.getFullYear() + 1)' sẽ thực hiện công việc với mã ít hơn nhiều. – RobG

+1

nhưng bạn cũng sẽ mất ngày gốc –

+0

Sau đó: 'var d = new Date (+ originalDate)' sẽ sao chép ngày ban đầu. – RobG

22

Sử dụng phương pháp Date.prototype.setFullYear để thiết lập năm với những gì bạn muốn nó được.

Ví dụ:

var aYearFromNow = new Date(); 
aYearFromNow.setFullYear(aYearFromNow.getFullYear() + 1); 

Có thực sự không phải là một cách khác để làm việc với các ngày trong JavaScript nếu những phương pháp này không có mặt trong môi trường bạn đang làm việc.

0

Các câu trả lời ở đây thường hoạt động nhưng tôi đã viết một số component bổ sung một số chức năng năm nhuận. Nó cũng hoạt động với các đơn vị thời gian khác (tháng, ngày, tuần, v.v.).

dụ bình thường:

var originalDate = new Date('January 5, 2017 12:00:00'); 
var newDate = dateAdd(originalDate, 1, 'year'); // => January 5, 2018 12:00:00 

Leap năm Ví dụ:

var originalDate = new Date('February 29, 2016 12:00:00'); 
var newDate = dateAdd(originalDate, 1, 'year'); // => February 28, 2017 12:00:00 

Với các phương pháp khác thêm một năm sẽ quay trở lại 1 tháng 3 nhưng điều này dường như có ích hơn với tôi vì nó duy trì tháng chính xác.

Bạn được quyền nhập thành phần này để sử dụng phương thức dateAdd().

0

// Đoạn mã này cũng sẽ xử lý phần bổ sung năm nhuận.

function updateExpiryDate(controlID, value) { 
    if ($("#ICMEffectiveDate").val() != '' && 
     $("#ICMTermYears").val() != '') { 

     var effectiveDate = $("#ICMEffectiveDate").val(); 
     var date = new Date(effectiveDate); 
     var termYears = $("#ICMTermYears").val(); 

     date = new Date(date.setYear(date.getFullYear() + parseInt(termYears))); 
     var expiryDate = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear(); 
     $('#ICMExpiryDate').val(expiryDate); 
    } 
}