文章目录
- 让日期区间更友好! 把常见的日期格式如: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 makeFriendlyDates(arr) { //获取当前年份 // 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 daytostr(day) { //先转为数值,判断后再转为字符串 day = parseInt(day); 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.push(months[date1[1] – 1] + ‘ ‘ + daytostr(date1[2]) + ‘, ‘ + date1[0]); return newDate; } else if (parseInt(date1[0]) == yearnow || date1[0] == date2[0]) { date1str = months[date1[1] – 1] + ‘ ‘ + daytostr(date1[2]); } else { date1str = months[date1[1] – 1] + ‘ ‘ + daytostr(date1[2]) + ‘, ‘ + date1[0]; } newDate.push(date1str); console.log(date1); console.log(date2); //如果同年同月 if (date1[0] == date2[0] && date1[1] == date2[1]) { date2str = daytostr(date2[2]); //如果同年不同月 } else { date2str = months[date2[1] – 1] + ‘ ‘ + daytostr(date2[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>
让日期区间更友好!
把常见的日期格式如: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 makeFriendlyDates(arr) {
//获取当前年份
// 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 daytostr(day) {
//先转为数值,判断后再转为字符串
day = parseInt(day);
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.push(months[date1[1] - 1] + ' ' + daytostr(date1[2]) + ', ' + date1[0]);
return newDate;
} else if (parseInt(date1[0]) == yearnow || date1[0] == date2[0]) {
date1str = months[date1[1] - 1] + ' ' + daytostr(date1[2]);
} else {
date1str = months[date1[1] - 1] + ' ' + daytostr(date1[2]) + ', ' + date1[0];
}
newDate.push(date1str);
console.log(date1);
console.log(date2);
//如果同年同月
if (date1[0] == date2[0] && date1[1] == date2[1]) {
date2str = daytostr(date2[2]);
//如果同年不同月
} else {
date2str = months[date2[1] - 1] + ' ' + daytostr(date2[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>
<script type="text/javascript">
function makeFriendlyDates(arr) {
//获取当前年份
// 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 daytostr(day) {
//先转为数值,判断后再转为字符串
day = parseInt(day);
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.push(months[date1[1] - 1] + ' ' + daytostr(date1[2]) + ', ' + date1[0]);
return newDate;
} else if (parseInt(date1[0]) == yearnow || date1[0] == date2[0]) {
date1str = months[date1[1] - 1] + ' ' + daytostr(date1[2]);
} else {
date1str = months[date1[1] - 1] + ' ' + daytostr(date1[2]) + ', ' + date1[0];
}
newDate.push(date1str);
console.log(date1);
console.log(date2);
//如果同年同月
if (date1[0] == date2[0] && date1[1] == date2[1]) {
date2str = daytostr(date2[2]);
//如果同年不同月
} else {
date2str = months[date2[1] - 1] + ' ' + daytostr(date2[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>
发表回复