Додайте рік до сьогоднішньої дати


81

Я намагаюся додати рік до сьогоднішньої дати. Я працюю в системі, яка не дозволяє використовувати standardJavaScript.

Наприклад, щоб отримати сьогоднішню дату, я повинен використовувати:

javascript:now();

Я намагався:

javascript:now(+1);

Я ніколи раніше цього не бачив, але мені потрібно додати рік до сьогоднішньої дати ...

Хтось раніше бачив отримання поточної дати таким чином? І якщо так, то як я можу додати рік?



Це не дублікат. Як я вже говорив вище, не можу використовувати стандартну методологію javascript
Кодекс

3
Це може бути корисно, якщо ви дасте нам уявлення про те, в якій системі виконується цей код.
Джон Коопс,

Відповіді:


105

Ви можете створити новий об’єкт дати з сьогоднішньою датою, використовуючи такий код:

var d = new Date();
    console.log(d);
// => Неділя 11 жовтня 2015 14:46:51 GMT-0700 (PDT)

Якщо ви хочете створити дату в певний час, ви можете передати нові аргументи конструктора дати

 var d = new Date(2014);
    console.log(d)

// => Wed Dec 31 1969 16:00:02 GMT-0800 (PST)

Якщо ви хочете взяти дату сьогодні і додати рік, ви можете спочатку створити об’єкт дати, отримати доступ до відповідних властивостей, а потім використовувати їх для створення нового об’єкта дати

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)

Ви можете прочитати більше про методи на об’єкті дати в MDN

Об'єкт дати


69
Немає необхідності створювати два об'єкти дати. d.setFullYear(d.getFullYear() + 1)зробить роботу набагато менше коду.
RobG

2
але ви також втратите початкову дату
Джона Вільямса

Потім: var d = new Date(+originalDate)скопіює оригінальну дату.
RobG

9
Це не працює з датою високосного року. наприклад, якщо ви введете 29/02/2016 після додавання року, він повернеться 29/02/2017, що є неправильним.
Renascent

7
@ANP ні, він повертається 01.03.2017, що, мабуть, все ще не те, що потрібно, але точно не поверне неіснуючу дату 29.02.2017. Майте на увазі, що в JavaScript лютий - 1, а не 2.
Роман Старков

82

Використовуйте метод Date.prototype.setFullYear, щоб встановити рік таким, яким ви хочете бути.

Наприклад:

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

Насправді немає іншого способу роботи з датами в JavaScript, якщо ці методи відсутні в середовищі, з яким ви працюєте.



5

Цей код додає кількість років, необхідних для дати.

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

Мені подобається тримати його в одному рядку, для цього ви можете використовувати функцію самовиклику, наприклад:

Якщо ви хочете отримати позначку часу +1 року в одному рядку

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

Якщо ви хочете отримати об'єкт Date з одним рядком

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

У Angular це спосіб обчислення дати

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

Якщо ви хочете додати роки до певної дати, окрім сьогоднішньої, використовуючи або роки, або місяці, або дні. Ви можете зробити наступне

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

Функція

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

// Цей фрагмент коду також буде обробляти високосний рік.

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';
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.