1. 程式人生 > >字串的日期轉換成全數字的日期表達方式

字串的日期轉換成全數字的日期表達方式

例如:日期:2017年5月1日 9:3:1 ; 將它轉換成20170501090301的時間格式;面試題大概是這個意思,原文意思很模糊,經面試官解釋為如上意思。主要卡殼地方為日與小時之間有個空格如何去掉,想使用將字串轉換成陣列除去陣列中的空元素,但是轉換成陣列後除去陣列中空元素有一定難度,在網上找的判斷方法都是如果陣列中的空元素==undefined , 則為空元素。這個方法一般情況下是好使的,但是此時的情況空元素其實是空格字串,判斷方法使用charCodeAt == 32(32為空格的unicode編碼)
具體程式碼如下:

<!DOCTYPE html>
<html lang="en"
>
<head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> window.onload = function () { var oDate1 = document.getElementById('date1'); var oDate2 = document.getElementById('date2'); str = '2017年5月1日 9:3:1'
; //將字串轉換成陣列 var arr1 = str.split(""); var arr2 = []; //除去字串中的空元素。由於將字串轉換成陣列,陣列中每個元素包括空格在內都是長度為1的字串。這就造成了如果用 undefined 作為判斷條件的話,判斷結果為false 。 所以只能用字元的 Unicode 編碼值做判斷。 for ( var i = 0 ; i < arr1.length; i++ ) { if (arr1[i].charCodeAt(0
) == 32) { arr1.splice(i,1); } } //將月日時分秒為一位的補零,判斷依據是年月日,冒號,無法轉換成數字 for ( var i = 0 ; i < arr1.length; i++ ) { if (isNaN(Number(arr1[i])) && isNaN(Number(arr1[i+2]))) { arr1.splice(i+1,0,0); } } //去除掉年月日,冒號,判斷依據是年月日,冒號,無法轉換成數字 for ( var i = 0 ; i < arr1.length ; i++ ) { if (isNaN(Number(arr1[i]))) { arr1.splice(i,1) } } var arr3 = arr1.join(""); oDate2.innerHTML = arr3; oDate1.innerHTML = str; }
</script> </head> <body> <h2 id="date1"></h2> <h2 id="date2"></h2> </body> </html>