尝试添加天数,但格式错误

时间:2016-12-07 11:41:50

标签: javascript jquery asp.net date getdate

我有两个文本框用于选择日期 - "有效期从日期"和"有效日期"。当日期输入到有效日期文本框中时,我想自动添加30天并将此日期放入有效日期文本框中。所以我在文本框中添加了一个onchange:

<asp:TextBox runat="server" ID="txtValidFromDate" onchange="UpdateValidToDate(this.value)" Width="80px" rel="datepicker"></asp:TextBox>

function UpdateValidToDate(date){
        var ValidToDate = new Date(date);
        var numberOfDaysToAdd = 30;
        ValidToDate.setDate(ValidToDate.getDate() + numberOfDaysToAdd);
        document.getElementById('<%= txtValidToDate.ClientID %>').value = ValidToDate;
    }

问题是日期格式是07/12/2016所以当我拨打ValidToDate.getDate()时格式错误。日期和月份变得混乱。因此,如果我添加此代码,我可以看到当天设置为12,而月份设置为7,而应该反过来。

var day = ValidToDate.getDate();
var month = ValidToDate.getMonth()+1;

如何格式化文本框中的日期,以便在我添加30天后返回正确的日期?

2 个答案:

答案 0 :(得分:0)

我不知道使用纯JS Date API以任意格式解析日期的可靠方法。

所以:

  1. 自己解析日期并从其组件构建它(例如使用RegExp)
  2. 使用第三方库,例如moment.js

答案 1 :(得分:0)

使用mm / dd / yyyy日期格式

尝试以下代码
var date = '12/07/2016';
var ValidToDate = new Date(date);
var numberOfDaysToAdd = 30;
ValidToDate.setDate(ValidToDate.getDate() + numberOfDaysToAdd);
document.write(ValidToDate.getDate()+'/'+(ValidToDate.getMonth()+1)+'/'+ValidToDate.getFullYear());

使用dd/mm/yyyy日期格式

进行更新

var date1 = '07/12/2016'; // let the format is dd/mm/yyyy
// convert date in mm/dd/yyyy format
d=date1.split('/');
date = d[1]+'/'+d[0]+'/'+d[2];
var ValidToDate = new Date(date);
var numberOfDaysToAdd = 30;
ValidToDate.setDate(ValidToDate.getDate() + numberOfDaysToAdd);
document.write(ValidToDate.getDate()+'/'+(ValidToDate.getMonth()+1)+'/'+ValidToDate.getFullYear());