JQuery/Javascript - добавление лет до даты переменной - программирование

JQuery/Javascript - добавление лет до даты переменной

У меня небольшая проблема, с которой было бы здорово помочь. Я создаю небольшую форму, в которой я хочу использовать текущую дату в формате 'dd/mm/yyyy' и добавить переменную года (ов) из раскрывающегося списка, чтобы создать конечную дату истечения срока действия. Единственная проблема в том, что я не знаю, как анализировать дату начала как переменную даты, чтобы завершить расчет. Любые мысли или помощь будут высоко оценены. Павел.

<script>
    $(document).ready(function () {
        $("#registerfor, #startdate, ").change(function () {
            // Get Variables
            var startdate = $("#startdate").val();
            var registerfor = $("#registerfor").val();
            // Add Years to Date
            var expirydate = startdate + registerfor;
            // Send Result on
            $("#expires").val(expirydate);
        });
    });
</script>
<input name="startdate" id="startdate" value="dd/mm/yyyy" />
<select id="registerfor" name="registerfor">
    <option value="1">1 Year</option>
    <option value="2">2 Years</option>
    <option value="3">3 Years</option>
</select>
4b9b3361

Ответ 1

Иногда то, что выглядит довольно прямолинейно, становится довольно сложным.

 $(document).ready( function () {

    $("#registerfor, #startdate").change( function () {

        var str = $("#startdate").val();

        if( /^\d{2}\/\d{2}\/\d{4}$/i.test( str ) ) {

            var parts = str.split("/");

            var day = parts[0] && parseInt( parts[0], 10 );
            var month = parts[1] && parseInt( parts[1], 10 );
            var year = parts[2] && parseInt( parts[2], 10 );
            var duration = parseInt( $("#registerfor").val(), 10);

            if( day <= 31 && day >= 1 && month <= 12 && month >= 1 ) {

                var expiryDate = new Date( year, month - 1, day );
                expiryDate.setFullYear( expiryDate.getFullYear() + duration );

                var day = ( '0' + expiryDate.getDate() ).slice( -2 );
                var month = ( '0' + ( expiryDate.getMonth() + 1 ) ).slice( -2 );
                var year = expiryDate.getFullYear();

                $("#expires").val( day + "/" + month + "/" + year );

            } else {
                // display error message
            }
        }
    });
});

Здесь - это скрипка, чтобы вы могли видеть ее в действии.

Ответ 2

Быстрое и простое решение:

var myDate = new Date();
myDate.setFullYear(myDate.getFullYear() + nbYearsToAdd);

"nbYearsToAdd" может быть отрицательным.

Ответ 3

var dt = new Date($("#startdate").val());

var updateDate = dt.setDate(dt.getFullYear() + $("#registerfor").val());

var dd = updateDate.getDate();
var mm = updateDate.getMonth();
var y = updateDate.getFullYear();

var someFormattedDate = dd + '/'+ mm + '/'+ y;
console.log(someFormattedDate);

Ответ 4

Чувак, он уже работает. Если вы все еще хотите конвертировать в дату, сделайте следующее:

var dat=Date.parse(startdate );

Ответ 5

Я бы:

  • поместите дату в формате, который Date.parse может работать красиво с (mm/dd/yyyy)
  • добавьте количество миллисекунд в год по сравнению с выбранной опцией
  • Преобразуйте новое значение в удобочитаемый формат и заполните #expires

    var dateArr = $("#startdate").val().split();
    var niceDate = Number(dateArr[1]) + "/" + Number(dateArr[0]) + "/" + Number(dateArr[2]);

    var expDate = Date.parse(niceDate) + 365*24*60*60*1000*Number($("#registerfor").val());

    $("#expires").val(expDate.getMonth()+1 + "/" + expDate.getDate() + "/" + expDate.getFullYear());

Если вам нужны 2-значные дни и месяцы для даты истечения срока действия, у вас могут быть дополнительные переменные, которые содержат строчную версию, и проверьте что-то вроде:
  var padMonth = expDate.getMonth()+1;
  if(expDate.getMonth()+1 < 10) padMonth = "0" + Number(expDate.getMonth()+1);

После этого вы будете использовать padMonth в $( "# expires" ). Val (...)

Ответ 7

много jquery для выбора даты доступно в сети

Это

один из них мой любимый, простой в реализации и редактировании в соответствии с нашими потребностями.

если вы хотите использовать script из своего кода, вы можете прямо передать значение даты var startdate, например

var startdate=<?php echo date("Y-m-d")?>

попробуйте это.. может помочь.