我有這個作爲我的日期:1212009所以這應該是像12/1/2009,但我堅持這個作爲一個ID字段和ID字段不能有破折號在那裏的名稱。如何將字符串轉換爲日期javascript?
現在可以java腳本採取這個數字,並重新添加削減爲我或如何去做這件事?
謝謝
我有這個作爲我的日期:1212009所以這應該是像12/1/2009,但我堅持這個作爲一個ID字段和ID字段不能有破折號在那裏的名稱。如何將字符串轉換爲日期javascript?
現在可以java腳本採取這個數字,並重新添加削減爲我或如何去做這件事?
謝謝
你應該有月份和日期的兩位數字,因爲"1212009"
是模糊的,可能被解釋爲"1/21/2009"
或"12/1/2009"
。
如果添加前導零,你知道會有始終8位,所以你可以做這樣的事情:
var str = "12012009"
var result = str.replace(/(\d{2})(\d{2})(\d{4})/, "$1/$2/$3");
// 12/01/2009
或者
var result = str.match(/(\d{2})(\d{2})(\d{4})/).slice(1).join('/');
// 12/01/2009
沒有前導零,不可能做出可靠的轉換。不可能知道1232009是1/23/2009還是12/3/2009沒有前導零。另外,您的示例編號也可以解釋爲1/21/2009。
要做到這一點,我將不得不拆分字符串以獲得年,月和日。我不能僅僅通過12012009進入日期構造函數,它會回到「無效日期」。 – chobo2 2009-12-27 21:16:15
假設您添加的領先零以消除歧義,你可以這樣格式化日期:
dateString = String(id).match(/(\d{2})(\d{2})(\d{4})/).slice(1).join('/')
也許這會幫助你擺脫六七號長日期(最重要的部分是第一部分):
var sDate = "1212009";
if(sDate.length == 7){
sDate = sDate.substr(0,2) + "0" + sDate.substr(2);
}
else if(sDate.length == 6){
sDate = "0" + sDate.substr(0,1) + "0" + sDate.substr(1);
}
// This part can be done with Regular Expressions, as shown in other comments
var month = parseInt(sDate.substring(0,2));
var day = parseInt(sDate.substring(2,4));
var year = parseInt(sDate.substring(4));
alert(day + "/" + month + "/" year);
// Will alert 12/1/2009
然而, 1232009永遠是2009年1月23日,未12/03/2009
112009更改1/1/2009
10102009更改爲2009/10/10
你怎麼知道這不是2009年1月21日? – ngn 2009-12-27 20:58:46