字串的日期轉換成全數字的日期表達方式
阿新 • • 發佈:2019-01-04
例如:日期: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>