【FCC】Friendly Date Ranges
生活随笔
收集整理的這篇文章主要介紹了
【FCC】Friendly Date Ranges
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
讓日期區間更友好!
把常見的日期格式如: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>
總結
以上是生活随笔為你收集整理的【FCC】Friendly Date Ranges的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FCC】No repeats plea
- 下一篇: 【FCC】Make a Person