Thêm một năm vào ngày hôm nay


81

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

Ví dụ, để có được ngày hàng ngày, 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 vào ngày thường ...

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



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

3
Nó có thể là hữu ích nếu bạn đã cho chúng tôi một số cái nhìn sâu sắc vào những gì hệ thống mã này được thực hiện trong.
Jon Koops

Câu trả lời:


105

Bạn có thể tạo một đối tượng date mới với ngày todays bằng mã sau:

var d = new Date();
    console.log(d);
// => Chủ Nhật, ngày 11 tháng 10 năm 2015 14:46:51 GMT-0700 (PDT)

Nếu bạn muốn tạo một ngày một thời gian cụ thể, bạn có thể chuyển các đối số của hàm tạo Ngày 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 lấy ngày tháng và thêm một năm, trước tiên bạn có thể tạo một đối tượng ngày tháng, truy cập các thuộc tính liên quan, sau đó sử dụng chúng để tạo một đối tượng ngày tháng 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);
    console.log(c);

// => Tue Oct 11 2016 00:00:00 GMT-0700 (PDT)

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

Đối tượng ngày


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

2
nhưng bạn cũng sẽ mất ngày ban đầu
Jonah Williams

Sau đó: var d = new Date(+originalDate)sẽ sao chép ngày gốc.
RobG

9
Điều này không hoạt động với ngày năm nhuận. Ví dụ: nếu bạn nhập 29/02/2016 sau khi thêm một năm, nó sẽ trả về 29/02/2017 là không chính xác.
Renascent

7
@ANP không, nó trả về ngày 01/03/2017, có thể vẫn chưa phải là những gì được yêu cầu nhưng nó chắc chắn sẽ không trả về ngày không tồn tại 29/02/2017. Hãy ghi nhớ rằng trong JavaScript, February là 1, không 2.
La Mã Starkov

80

Sử dụng phương thức Date.prototype.setFullYear để đặt năm như bạn muốn.

Ví dụ:

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

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



5

Mã này thêm số năm cần thiết cho một ngày.

var d = new Date();
// => Tue Oct 01 2017 00:00:00 GMT-0700 (PDT)

var amountOfYearsRequired = 2;
d.setFullYear(d.getFullYear() + amountOfYearsRequired);
// => Tue Oct 01 2019 00:00:00 GMT-0700 (PDT)

2

Tôi muốn giữ nó trong một dòng duy nhất, bạn có thể sử dụng chức năng tự gọi cho điều này, ví dụ:

Nếu bạn muốn lấy dấu thời gian +1 năm trên một dòng

console.log(
  (d => d.setFullYear(d.getFullYear() + 1))(new Date)
)

Nếu bạn muốn lấy đối tượng Ngày với một dòng

console.log(
  (d => new Date(d.getFullYear() + 1, d.getMonth(), d.getDate()))(new Date)
)


1
    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth();
    var day = d.getDate();

    var fulldate = new Date(year + 1, month, day);

    var toDate = fulldate.toISOString().slice(0, 10);

    $("#txtToDate").val(toDate);

    output : 2020-01-02

0

Trong Angular, Đây là cách bạn Tính Ngày

today = new Date();
year = this.today.getFullYear();
month = this.today.getMonth();
day = this.today.getDate();
//To go 18 years back
yearsBack18= new Date(this.year - 18, this.month, this.day);

//To go to same day next year
nextYear= new Date(this.year + 1, this.month, this.day);

-1

Trong trường hợp bạn muốn thêm năm vào ngày cụ thể bên cạnh ngày hôm nay bằng cách sử dụng năm hoặc tháng hoặc ngày. Bạn có thể làm như sau

var christmas2000 = new Date(2000, 12, 25); 
christmas2000.setFullYear(christmas2000.getFullYear() + 5); // using year: next 5 years
christmas2000.setFullYear(christmas2000.getMonth() + 24); // using months: next 24 months
christmas2000.setFullYear(christmas2000.getDay() + 365); // using days: next 365 months

-1

Chức năng

var date = new Date();

var year = date.getFullYear();

var month = date.getMonth();

month = month + 1;

if (month < 10) {
    month = "0" + month;
} 

var day = date.getDate();

if (day < 10) {
    day = "0" + day;
} 

year = year + 1;

var FullDate =  year + '/' + month + '/' + day; 

-2

// Đoạn mã này cũng sẽ xử lý việc 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);
    }
}

-2
var yearsToAdd = 5;
var current = new Date().toISOString().split('T')[0];
var addedYears = Number(this.minDate.split('-')[0]) + yearsToAdd + '-12-31';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.