2016-12-07 89 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