Jquery / Javascript – 添加年代变量

我有一个小麻烦,很高兴得到一些帮助。 我正在创建一个小表单,我希望将当前日期格式化为'dd/mm/yyyy'并从下拉框中添加年份变量以创建最终到期日期。 唯一的麻烦是我不知道如何将开始日期解析为日期变量以完成计算。 任何想法或帮助将不胜感激。 保罗。

  $(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); }); });    1 Year 2 Years 3 Years  

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

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

是一个小提琴,所以你可以看到它在行动。

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

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

“nbYearsToAdd”可能是否定的。

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

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

 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 padMonth = expDate.getMonth()+1;
if(expDate.getMonth()+1 < 10) padMonth = "0" + Number(expDate.getMonth()+1);

之后,你将在$(“#expires”)中使用padMonth.val(...)

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

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

网上有很多日期选择器jquery

这个

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

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

 var startdate= 

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