题目:
让日期区间更友好!
把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式。
易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 1st 代替 1).
记住不要显示那些可以被推测出来的信息: 如果一个日期区间里结束日期与开始日期相差小于一年,则结束日期就不用写年份了;在这种情况下,如果月份开始和结束日期如果在同一个月,则结束日期月份也不用写了。
另外, 如果开始日期年份是当前年份,且结束日期与开始日期小于一年,则开始日期的年份也不用写。
例如:
包含当前年份和相同月份的时候,makeFriendlyDates[“2017-01-02”, “2017-01-05”]) 应该返回 [“January 2nd”,”5th”]
不包含当前年份,makeFriendlyDates[“2003-08-15”, “2009-09-21”]) 应该返回 [“August 15th, 2003”, “September 21st, 2009”]。
请考虑清楚所有可能出现的情况,包括传入的日期区间是否合理。对于不合理的日期区间,直接返回 undefined 即可
代码:
<script type="text/javascript">
function makeFriendlyDatesarr) {
//获取当前年份
// var yearnow=new Date)).getFullYear);
var yearnow = 2017;
var date1 = arr[0].split'-');
var date2 = arr[1].split'-');
//去除不正确日期
if date1[0] > date2[0]) {
return undefined;
}
if date1[0] == date2[0] && date1[1] > date2[1]) {
return undefined;
}
if date1[0] == date2[0] && date1[1] == date2[1] && date1[2] > date2[2]) {
return undefined;
}
//把日期转换成对应的简便字符串
function daytostrday) {
//先转为数值,判断后再转为字符串
day = parseIntday);
if day == 1 || day == 21 || day == 31) {
return day.toString) + 'st';
} else if day == 2 || day == 22) {
return day.toString) + 'nd';
} else if day == 3 || day == 23) {
return day.toString) + 'rd';
} else {
return day.toString) + 'th';
}
}
//定义月份的英文表示
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October",
"November", "December"
];
var date1str = '';
var date2str = '';
var newDate = [];
//数组不能直接比较
if date1[0] == date2[0] && date1[1] == date2[1] && date1[2] == date2[2]) {
newDate.pushmonths[date1[1] - 1] + ' ' + daytostrdate1[2]) + ', ' + date1[0]);
return newDate;
} else if parseIntdate1[0]) == yearnow || date1[0] == date2[0]) {
date1str = months[date1[1] - 1] + ' ' + daytostrdate1[2]);
} else {
date1str = months[date1[1] - 1] + ' ' + daytostrdate1[2]) + ', ' + date1[0];
}
newDate.pushdate1str);
console.logdate1);
console.logdate2);
//如果同年同月
if date1[0] == date2[0] && date1[1] == date2[1]) {
date2str = daytostrdate2[2]);
//如果同年不同月
} else {
date2str = months[date2[1] - 1] + ' ' + daytostrdate2[2]);
}
if date2[0] - date1[0] > 1 || date2[0] - date1[0] == 1) && date2[1] - date1[1] > 0)) || date2[0] - date1[0] ==
1) && date2[1] - date1[1] == 0) && date2[2] - date1[2] >= 0))) {
date2str = date2str + ', ' + date2[0];
} else if date1[0] == yearnow) {
}
return newDate;
}
</script>