记得以前参加校招的时候,总是有日期相关的面试题,比如计算两个日期之间的间隔天数。以前还觉得这种题就是为了纯粹为了面试的,但工作了之后,还就碰到了跟日期相关的bug。下面是一段js代码,是要把字符串描述的日期转换为Date类型的函数。其中,字符串的格式为年占用4个字符,月份2个字符,天数2个字符,小时2个字符,分钟2个字符,秒数2个字符。
1 function str2Date(str) { 2 var year = parseInt(str.substr(0, 4)); 3 // Month value range is [0, 11] 4 var month = parseInt(str.substr(4, 2)) - 1; 5 var day = parseInt(str.substr(6, 2)); 6 var hour = parseInt(str.substr(8, 2)); 7 var minute = parseInt(str.substr(10, 2)); 8 var second = parseInt(str.substr(12, 2)); 9 10 var date = new Date(); 11 date.setYear(year); 12 date.setMonth(month); 13 date.setDate(day); 14 date.setHours(hour); 15 date.setMinutes(minute); 16 date.setSeconds(second); 17 return date; 18 } 19 20 console.log(str2Date('20150515180000').toString()); 21 console.log(str2Date('20160229235959').toString()); 22 console.log(str2Date('20171231235959').toString()); 23 console.log(str2Date('20181101000000').toString());