2014-03-01 34 views
0

我已經一個輸入類型文本:轉換輸入類型文本日期格式

<input type="text" id="policyholder-dob" name="policyholder-dob" /> 

我想在毫米/ dd/yyyy格式此字段可以鍵入號碼: 等2014年1月1日 這是我的js代碼,但它不工作,我犯了什麼錯誤?

function dateFormatter(date) { 
    var formattedDate = date.getDate() 
     + '/' + (date.getMonth() + 1) + '/' + date.getFullYear(); 
    return formattedDate; 
} 

var nextduedate = $("#policyholder-dob").val(); 

var dateFormatDate = nextduedate.slice(0, 2); 
var dateFormatMonth = nextduedate.slice(2, 4); 
var dateFormatYear = nextduedate.slice(4, 8); 
var totalFormat = dateFormatMonth + '/' + dateFormatDate + '/' + dateFormatYear; 
var againNewDate = new Date(totalFormat); 
againNewDate.setDate(againNewDate.getDate() + 1); 
var todaydate = dateFormatter(againNewDate); 

$("#policyholder-dob").prop("value", todaydate); 

任何幫助將非常感激。

+0

相關:http://stackoverflow.com/questions/5619202/converting-string-to-date-in-js – Charlie

+0

不,我不認爲它符合我的要求,如果我搭售任何數字其給予日期格式.. – supersaiyan

+1

什麼不工作?你有沒有jsFiddle? – Xotic750

回答

0

值得慶幸的是,你的輸入是一致的格式如下:

mm/dd/yyyy 

所以,你可以將其轉換爲Date對象通過自定義功能,如:

function stringToDate(str){ 
    var date = str.split("/"), 
     m = date[0], 
     d = date[1], 
     y = date[2], 
     temp = []; 
    temp.push(y,m,d); 
    return (new Date(temp.join("-"))).toUTCString(); 
} 

或者:

function stringToDate(str){ 
    var date = str.split("/"), 
     m = date[0], 
     d = date[1], 
     y = date[2]; 
    return (new Date(y + "-" + m + "-" + d)).toUTCString(); 
} 

等..

調用它很簡單:

stringToDate("12/27/1963"); 

,並將在格林尼治標準時間返回正確的時間戳(讓你的本地時區不會影響日(EST -5,使其成爲第26號)):

Fri, 27 Dec 1963 00:00:00 GMT //Late december 

Example

有不同的方法來做到這一點,這是其中之一。

+0

這不是跨瀏覽器(需要ISO8601的ECMA5),並且由於瀏覽器與字符串解析的差異而容易出錯。 – Xotic750

+0

@ Xotic750正如我所說,有很多種方法可以做到這一點,這就是其中之一。瀏覽器與字符串解析的區別是什麼? – Charlie

+0

這只是給讀者一個提示。只需很少的努力,您可以製作這個跨瀏覽器,同時避免字符串解析陷阱。關於字符串解析可靠性,有很多關於SO的信息,我不打算重複。 – Xotic750

0

對於日期操作,我建議使用moment.js。如果您試圖將月份加1,那麼您將遇到一個受傷的世界。當月份是十二月份時,會發生什麼事情,並且最終會有13個月份。讓圖書館爲你處理所有這些頭痛問題。你可以用你從val中拉出的字符串創建你的時間日期。你的子字符串或解析。

var d = moment('01/31/2014');     // creates a date of Jan 31st, 2014 
var duration = moment.duration({'days' : 1}); // creates a duration object for 1 day 
d.add(duration);        // add duration to date 
alert(d.format('MM/DD/YYYY'));    // alerts 02/01/2014 

Here's a fiddle showing it off.