尝试添加迄今为止的天数但格式错误

Trying to add number of days to date but format is wrong

我有两个用于 select 日期的文本框 - "Valid from date" 和 "Valid To Date"。当日期输入到有效日期文本框中时,我想自动添加 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 天后 returns 成为正确的日期?

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

所以要么:

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

使用 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());