Jquery/Javascript-将年份添加到日期变量

Jquery/Javascript-将年份添加到日期变量,javascript,jquery,Javascript,Jquery,我有一个小麻烦,如果能得到一些帮助,那就太好了。我正在创建一个小表单,希望采用格式为“dd/mm/yyyy”的当前日期,并从下拉框中添加一个年份变量,以创建最终到期日期。唯一的问题是我不知道如何将开始日期解析为日期变量以完成计算。如有任何想法或帮助,将不胜感激。保罗 <script> $(document).ready(function () { $("#registerfor, #startdate, ").change(function () {

我有一个小麻烦,如果能得到一些帮助,那就太好了。我正在创建一个小表单,希望采用格式为“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>

$(文档).ready(函数(){
$(“#register for,#startdate,”).change(函数(){
//获取变量
var startdate=$(“#startdate”).val();
var registerfor=$(“#registerfor”).val();
//添加到日期的年份
var expirydate=起始日期+寄存器,用于;
//发送结果
$(“#expires”).val(expireydate);
});
});
一年
两年
三年

网上有很多日期选择器jquery

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

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

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

试试这个。。可能会有帮助。

有时候看起来很简单的任务会变得很复杂

 $(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
            }
        }
    });
});
$(文档).ready(函数(){
$(“#register for,#startdate”).change(函数(){
var str=$(“#开始日期”).val();
if(/^\d{2}\/\d{2}\/\d{4}$/i.test(str)){
var parts=str.split(“/”);
var日=部分[0]&&parseInt(部分[0],10);
变量月=部分[1]&&parseInt(部分[1],10];
风险值年份=部分[2]&&parseInt(部分[2],10];
var duration=parseInt($(“#registerfor”).val(),10);
如果(日=1和月=1){
var expiryDate=新日期(年、月-1、日);
expiryDate.setFullYear(expiryDate.getFullYear()+持续时间);
var day=('0'+expiryDate.getDate()).slice(-2);
var month=('0'+(expiryDate.getMonth()+1)).slice(-2);
var year=expiryDate.getFullYear();
美元(“#到期”).val(日+“/”+月+“/”+年);
}否则{
//显示错误消息
}
}
});
});

是一把小提琴,你可以看到它在演奏。

老兄,它已经开始工作了。如果仍要按日期转换,请执行以下操作:

var dat=Date.parse(startdate );
我想:

  • 将日期设置为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 padmount=expDate.getMonth()+1
if(expDate.getMonth()+1<10)padmount=“0”+数字(expDate.getMonth()+1)



在此之后,您将使用美元(“#expires”).val(…)

一个快速简便的解决方案:

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

“nbYearsToAdd”可以是负数。

您是否使用jquery?Hi@kash是的,我希望使用JqueryHi-kash,感谢您的回复,但不幸的是,我需要从已建立的字段发送变量,因此我无法利用您的建议。为你的想法干杯。嗨@don,我很感激你的想法,尽管我真的在努力让你的解决方案奏效。我确实看到了逻辑,但它无法实现以适应解决方案。如果我想在2012年10月2日之前再加上2年,以便到期字段显示2014年10月2日,则上述解决方案本身不起作用。我很感激你的想法和意见,抱歉,伙计。这段代码正在征服我。不幸的是,它不能转换为日期。我做了一个警报检查,var updateDate返回一个类似于3074335200000的字符串,因此从中提取月/日/年是不正常的。@DOM,你是说setFullYear而不是setDate,不是吗?嗨,Ivan,希望它能工作。上面的代码生成了一个类似于05/10/20122的结果,通过解析日期,我得到的是一个类似于133657200002的数字:Thank heaps Bruno。说真的,非常感谢!似乎太复杂了,下面的响应听起来更好使用
setFullYear
,因为
setYear
已被弃用:
var myDate = new Date();
myDate.setFullYear(myDate.getFullYear() + nbYearsToAdd);