Jquery / Javascript - 添加年代变量

时间:2013-02-04 11:56:08

标签: javascript jquery

我遇到一些小麻烦,对你有所帮助会很棒。我正在创建一个小表单,我希望将当前日期格式化为'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>

7 个答案:

答案 0 :(得分:32)

快速简便的解决方案:

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

&#34; nbYearsToAdd&#34;可能是消极的。

答案 1 :(得分:8)

有时看起来很简单的任务变得相当复杂。

 $(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
            }
        }
    });
});

Here是一个小提琴,所以你可以看到它的实际效果。

答案 2 :(得分:1)

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);

答案 3 :(得分:0)

老兄,它已经有效了。如果您仍想转换日期,请执行以下操作:

var dat=Date.parse(startdate );

答案 4 :(得分:0)

我会:

  • 将日期设置为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());

如果您需要两位数的日期和月份作为到期日期,您可以使用额外的变量来保存它们的字符串版本,并检查以下内容:
    var padMonth = expDate.getMonth()+1;
    if(expDate.getMonth()+1 < 10) padMonth = "0" + Number(expDate.getMonth()+1);

之后,您将在$(“#expires”)。val(...)

中使用padMonth

答案 5 :(得分:0)

此链接提供了有关在Javascript中使用日期操作的最佳答案

http://msdn.microsoft.com/en-us/library/ee532932(v=vs.94).aspx

答案 6 :(得分:-1)

网上有很多日期选择器jquery

This

一个是我最喜欢的,根据我们的需要易于实施和编辑。

如果您想使用代码中的脚本,可以直接将日期值传递给 var startdate ,如

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

试试这个......可能有所帮助。