2016-12-07 90 views
0

我有两个文本框用于选择日期 - “从日期有效”和“有效到日期”。当日期输入到有效日期文本框中时,我想自动添加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; 
    } 

的问题是日期格式2016年7月12日,所以当我打电话ValidToDate.getDate()格式是错误的。日子和月份越来越混乱。所以,如果我添加这段代码,我可以看到一天被设置为12,而月份被设置为7,当它应该是相反的。

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

如何格式化来自文本框的日期,所以当我添加30天时它会返回正确的日期?

+0

你需要在'的setDate使用它之前更改日期格式'MM/DD/yyyy'取代'DD/MM/yyyy'格式()'。 –

+0

使用'新日期(ValidToDate).getDate()' – Satpal

+0

如果您使用任何日期选择器组件,他们总是有一个获取日期对象(而不是字符串表示)的方法 – Jamiec

回答

0

尝试下面的代码具有毫米/ 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());

+0

好吧,但如何将日期格式更改为mm/dd/yyyy而不是dd/mm/yyyy? – user123456789

+0

试试我的更新回答。 –

0

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

因此,要么:

  1. 自己解析日期和它的组件构建它(例如,使用正则表达式)
  2. 使用第三方库像moment.js