阿里2017前端实习生笔试编程第一题
2017-04-25 22:55
459 查看
阿里2017实习生笔试时间一小时,这是两道编程题中的第一题,当时做题时时间不够,虽然知道怎么做,但是提交时的结果完全错误,最终原因还是自己对JavaScript掌握的不熟练,之后又花一小时把基本要求实现了,如下。
题目描述:做提的时候删了要求,但是具体要求大概是
1、不使用外部库
2、将<td>标签内的时间,更改为与给定的时间的差(给定时间维为:2017年4月1日 22:33:44)
3、如果相差大于一年,则改为N年前/后。
4、如果相差小于一年,大于一月,则改为N月前/后。
5、...
6、如果相差小于一分钟,则改为N秒前/后。
以下代码计算了相差相差多少天、小时、分钟、秒。没有区分月和年(如果计算月和年的话会比以下代码简单,删除一部分即可)。
代码存在的问题:
1、没有进行闰年的判断,每年默认365天。
2、没有判断大小月,每月默认30天。
<body>
<p>帖子发布时间 2017年4月1日 22:33:44</p>
<table>
<thead>
<tr>
<th>游戏名称</th>
<th>发售日</th>
</tr>
</thead>
<tbody>
<tr>
<td>火焰之纹章无双</td>
<td>待定</td>
</tr>
<tr>
<td>火焰之纹章无双</td>
<td>待定</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-03-09 14:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 22:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 23:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 22:33:46</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 14:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-05-19</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-20</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-20</td>
</tr>
<tr>
<td>火焰之纹章</td>
<td>2016-06-24</td>
</tr>
<tr>
<td>火焰之纹章</td>
<td>2013-04-19</td>
</tr>
<tr>
<td>火焰之纹章</td>
<td>2012-04-19</td>
</tr>
</tbody>
</table>
</body>
原网页显示结果:(添加了简单的css样式)
![](https://img-blog.csdn.net/20170425232620446?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl5dXhpbmc2NjM5ODAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我的JavaScript代码:
< script > window.onload = function() {
var nowtime = ["2017", "04", "01", "22", "33", "44"];
var gettd = document.getElementsByTagName("td");
var arr = [];
for (let i = 0; i < gettd.length; i++) {
arr[i] = gettd[i].innerHTML;
arr[i] = arr[i].split(/[-\s:]/g);
var temp = 0;
var temp2 = 0;
if (nowtime[0] > arr[i][0]) {
temp += (nowtime[0] - arr[i][0]) * 365;
if (nowtime[1] > arr[i][1]) {
temp += (nowtime[1] - arr[i][1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] < arr[i][1]) {
temp -= (arr[i][1] - nowtime[1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] == arr[i][1]) {
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
} else if (nowtime[2] == arr[i][2]) {
//由第一层判断可知,不是同一年
}
}
} else if (nowtime[0] < arr[i][0]) {
temp += (arr[i][0] - nowtime[0]) * 365;
if (nowtime[1] > arr[i][1]) {
temp += (nowtime[1] - arr[i][1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] < arr[i][1]) {
temp -= (arr[i][1] - nowtime[1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] == arr[i][1]) {
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
} else if (nowtime[2] == arr[i][2]) {
//由第一层判断可知,不是同一年
}
}
} else if (nowtime[0] == arr[i][0]) {
if (nowtime[1] > arr[i][1]) {
temp += (nowtime[1] - arr[i][1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] < arr[i][1]) {
temp -= (arr[i][1] - nowtime[1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] == arr[i][1]) {
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
} else if (nowtime[2] == arr[i][2]) {
//是同一天,继续判断时分秒。
temp2 = checkdetail(arr, nowtime, i);
}
}
}
if (arr[i][0] > 0) {
if (temp > 0) {
gettd[i].innerHTML = temp + "天前";
} else if (temp < 0) {
gettd[i].innerHTML = Math.abs(temp) + "天后";
}
}
if (arr[i][3] && arr[i][0] == nowtime[0] && arr[i][1] == nowtime[1] && arr[i][2] == nowtime[2]) {
gettd[i].innerHTML = temp2;
}
}
}
//判定年月日都相同时,判断时分秒
function checkdetail(arr1, now1, index) {
if (arr1[index][3] >= 0) {
if (now1[3] > arr1[index][3]) {
return (now1[3] - arr1[index][3]) + "小时前";
} else if (now1[3] < arr1[index][3]) {
return (arr1[index][3] - now1[3]) + "小时后";
} else if (now1[3] == arr1[index][3]) {
if (now1[4] > arr1[index][4]) {
return (now1[4] - arr1[index][4]) + "分钟前";
} else if (now1[4] < arr1[index][4]) {
return (arr1[index][4] - now1[4]) + "分钟后";
} else if (now1[4] == arr1[index][4]) {
if (now1[5] > arr1[index][5]) {
return (now1[5] - arr1[index][5]) + "秒前";
} else if (now1[5] < arr1[index][5]) {
return (arr1[index][5] - now1[5]) + "秒后";
}
}
}
}
} < /script>/处理后的结果:
题目描述:做提的时候删了要求,但是具体要求大概是
1、不使用外部库
2、将<td>标签内的时间,更改为与给定的时间的差(给定时间维为:2017年4月1日 22:33:44)
3、如果相差大于一年,则改为N年前/后。
4、如果相差小于一年,大于一月,则改为N月前/后。
5、...
6、如果相差小于一分钟,则改为N秒前/后。
以下代码计算了相差相差多少天、小时、分钟、秒。没有区分月和年(如果计算月和年的话会比以下代码简单,删除一部分即可)。
代码存在的问题:
1、没有进行闰年的判断,每年默认365天。
2、没有判断大小月,每月默认30天。
<body>
<p>帖子发布时间 2017年4月1日 22:33:44</p>
<table>
<thead>
<tr>
<th>游戏名称</th>
<th>发售日</th>
</tr>
</thead>
<tbody>
<tr>
<td>火焰之纹章无双</td>
<td>待定</td>
</tr>
<tr>
<td>火焰之纹章无双</td>
<td>待定</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-03-09 14:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 22:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 23:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 22:33:46</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-01 14:08:22</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-05-19</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-20</td>
</tr>
<tr>
<td>火焰之纹章 回声 另一位英雄王</td>
<td>2017-04-20</td>
</tr>
<tr>
<td>火焰之纹章</td>
<td>2016-06-24</td>
</tr>
<tr>
<td>火焰之纹章</td>
<td>2013-04-19</td>
</tr>
<tr>
<td>火焰之纹章</td>
<td>2012-04-19</td>
</tr>
</tbody>
</table>
</body>
原网页显示结果:(添加了简单的css样式)
我的JavaScript代码:
< script > window.onload = function() {
var nowtime = ["2017", "04", "01", "22", "33", "44"];
var gettd = document.getElementsByTagName("td");
var arr = [];
for (let i = 0; i < gettd.length; i++) {
arr[i] = gettd[i].innerHTML;
arr[i] = arr[i].split(/[-\s:]/g);
var temp = 0;
var temp2 = 0;
if (nowtime[0] > arr[i][0]) {
temp += (nowtime[0] - arr[i][0]) * 365;
if (nowtime[1] > arr[i][1]) {
temp += (nowtime[1] - arr[i][1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] < arr[i][1]) {
temp -= (arr[i][1] - nowtime[1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] == arr[i][1]) {
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
} else if (nowtime[2] == arr[i][2]) {
//由第一层判断可知,不是同一年
}
}
} else if (nowtime[0] < arr[i][0]) {
temp += (arr[i][0] - nowtime[0]) * 365;
if (nowtime[1] > arr[i][1]) {
temp += (nowtime[1] - arr[i][1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] < arr[i][1]) {
temp -= (arr[i][1] - nowtime[1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] == arr[i][1]) {
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
} else if (nowtime[2] == arr[i][2]) {
//由第一层判断可知,不是同一年
}
}
} else if (nowtime[0] == arr[i][0]) {
if (nowtime[1] > arr[i][1]) {
temp += (nowtime[1] - arr[i][1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] < arr[i][1]) {
temp -= (arr[i][1] - nowtime[1]) * 30;
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
}
} else if (nowtime[1] == arr[i][1]) {
if (nowtime[2] > arr[i][2]) {
temp += (nowtime[2] - arr[i][2]);
} else if (nowtime[2] < arr[i][2]) {
temp -= (arr[i][2] - nowtime[2]);
} else if (nowtime[2] == arr[i][2]) {
//是同一天,继续判断时分秒。
temp2 = checkdetail(arr, nowtime, i);
}
}
}
if (arr[i][0] > 0) {
if (temp > 0) {
gettd[i].innerHTML = temp + "天前";
} else if (temp < 0) {
gettd[i].innerHTML = Math.abs(temp) + "天后";
}
}
if (arr[i][3] && arr[i][0] == nowtime[0] && arr[i][1] == nowtime[1] && arr[i][2] == nowtime[2]) {
gettd[i].innerHTML = temp2;
}
}
}
//判定年月日都相同时,判断时分秒
function checkdetail(arr1, now1, index) {
if (arr1[index][3] >= 0) {
if (now1[3] > arr1[index][3]) {
return (now1[3] - arr1[index][3]) + "小时前";
} else if (now1[3] < arr1[index][3]) {
return (arr1[index][3] - now1[3]) + "小时后";
} else if (now1[3] == arr1[index][3]) {
if (now1[4] > arr1[index][4]) {
return (now1[4] - arr1[index][4]) + "分钟前";
} else if (now1[4] < arr1[index][4]) {
return (arr1[index][4] - now1[4]) + "分钟后";
} else if (now1[4] == arr1[index][4]) {
if (now1[5] > arr1[index][5]) {
return (now1[5] - arr1[index][5]) + "秒前";
} else if (now1[5] < arr1[index][5]) {
return (arr1[index][5] - now1[5]) + "秒后";
}
}
}
}
} < /script>/处理后的结果:
相关文章推荐
- [置顶] 2017腾讯暑期实习生从笔试到面试总结(附带华为、阿里面试经历)
- 阿里2017秋招前端面试笔试题
- 2017阿里研发工程师C/C++实习生招聘笔试题
- 2017今日头条前端实习生笔试题
- Legendary Items-微软2017实习生笔试第一题
- 2017网易游戏编程笔试题·第一题
- 常见Java问题及笔试题(十七)——阿里2017实习生研发题
- 2017微软秋季校园招聘在线编程笔试(第一题)
- 2017腾讯Web前端实习生招聘笔试题总结
- 阿里2014前端线上笔试题
- [置顶] 2014-03-29.阿里实习生招聘笔试题目
- 2014-03-29.阿里实习生招聘笔试题目
- 阿里实习生招聘笔试题目
- 2014年阿里、腾讯的实习生笔试题分析
- 阿里实习生招聘笔试题目
- 2014-03-29.阿里实习生招聘笔试题目
- 2014阿里前端实习生在线测试题目
- 阿里_一道备受关注的前端开发笔试题
- 腾讯2014春季实习生招聘 笔试题目 第一批次
- 2014-03-29.阿里实习生招聘笔试题目