2017-06-19 49 views
0

我試圖從html輸入到javascript,從它減去3年的日期,然後將新日期放回到另一個html日期輸入字段。如何操作從javascript輸入javascript的日期

我得到了與當前日期一起使用的減法,但是當我從html輸入中獲取日期時,我無法讓它正常工作。

下面我的代碼工作:

<input id="InputDate" data-role="datepicker"/> 
<input id="OutputDate" data-role="datepicker"/> 

<script type="text/javascript"> 
    var dt = new Date(); // this line I want to replace with the next 2 lines! 
    //var inDate= document.getElementById("InputDate").value; 
    //var dt = new Date(inDate); 
    dt.setFullYear(dt.getFullYear() - 3); 
    var datestring = ("0" + dt.getDate()).slice(-2) + "." + ("0"+(dt.getMonth()+1)).slice(-2) + "." + dt.getFullYear(); 
    document.getElementById("OutputDate").value = datestring; 

當我取回從輸入字段我得到「aN.aN.NaN」回輸出域的日期。 我試過document.getElementById(「InputDate」).valueAsDate,但是這也不起作用。 當我在dt的實例化後發出警報(dt)時,我得到'無效日期'。

任何建議如何正確獲取DateObject中的提取日期?

問候,馬努

+0

什麼有效/安全的日期格式讓日期構造函數解析,你可以研究。如果您的輸入日期格式不同,那麼您必須先修改它。 – CBroe

+0

什麼日期格式InputDate字段有? –

回答

1
var inputValues = document.getElementById("InputDate").value.split("."); 
var dt = new Date(inputValues[2], inputValues[1] - 1, inputValues[0]); 

如果你喜歡的東西作爲22.12.1985值InputDate

1

使用日期格式

var date = "2017-06-19";//yyyy-mm-dd or mm-dd-yyyy 
var dt = new Date(date); 
console.log(dt); 
//output Mon Jun 19 2017 00:00:00 GMT+0545 (Nepal Standard Time) 
// if you want to set the date to new output text box 
var newDate = dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate(); 
console.log(newDate); 
1

首先驗證你的,的document.getElementById ( 「InputDate」)。值;是 返回正確的日期

var inDate= document.getElementById("InputDate").value; 
    var dt = new Date(Date.parse(inDate)); //use parse input to corret date format 
    dt.setFullYear(dt.getFullYear() - 3); 
+0

Date.parse的概念很好,但不幸的是它不是推薦的做法;請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse – slevy1

2

只是需要正確的格式傳遞給date()函數:

//var dt = new Date(); // this line I want to replace with the next 2 lines! 
 
    var inDate= document.getElementById("InputDate").value; 
 
    inDate = inDate.split("."); 
 
    var dt = new Date(inDate[2],inDate[1],inDate[0]); 
 
    //alert(dt); 
 
    dt.setFullYear(dt.getFullYear() - 3); 
 
    
 
    var datestring = ("0" + dt.getDate()).slice(-2) + "." + ("0"+(dt.getMonth()+1)).slice(-2) + "." +   dt.getFullYear(); 
 
    document.getElementById("OutputDate").value = datestring;
<input id="InputDate" data-role="datepicker" value="19.05.2015"/> 
 
<input id="OutputDate" data-role="datepicker"/>

1

var d = document; 
 
d.g = d.getElementById; 
 

 
var inDate = d.g("InputDate"); 
 
var outDate = d.g("OutputDate"); 
 
var datestring = ""; 
 
var mo = ""; 
 
var dt = null; 
 

 

 
inDate.onchange = function() { 
 
    dt = new Date(inDate.value); 
 
    dt.setFullYear(dt.getFullYear() - 3); 
 
    datestring = ("0" + (dt.getMonth() + 1)).slice(-2) + "." + ("0" + dt.getDate()).slice(-2) + "." + dt.getFullYear(); 
 
    outDate.value = datestring; 
 

 
};
<input id="InputDate" data-role="datepicker" value="mm.dd.yyyy"><input id="OutputDate" data-role="datepicker" />

此修訂使用onchange事件屬性,該屬性避免顯示「NaN」消息以響應用作用戶提示的默認值「mm.dd.yyyy」。它還使用一些捷徑來減少代碼的冗長度。注意:雖然官方示例優雅地分割爲「。」獲取日期值,儘管額外的代碼,花時間使用Date方法來提取月份,日期和年份具有優勢。拆分「。」只要輸入數據包含劃分月份,日期和年份值的時間段就可以工作。但用戶可以使用「/」或「 - 」,然後該分割代碼將不會產生正確的結果,除非有代碼檢查該期間。

相關問題