把常見的日期格式如:YYYY-MM-DD 轉換成一種更易讀的格式。 易讀格式應該是用月份名稱代替月份數字,用序數詞代替數字來表示天 (1st 代替 1). 記住不要顯示那些可以被推測出來的信息: 如果一個日期區間里結束日期與開始日期相差小於一年,則結束日期就不用寫年份了;在這種情況下,如果月份開始和 ...
把常見的日期格式如:YYYY-MM-DD
轉換成一種更易讀的格式。
易讀格式應該是用月份名稱代替月份數字,用序數詞代替數字來表示天 (1st
代替 1
).
記住不要顯示那些可以被推測出來的信息: 如果一個日期區間里結束日期與開始日期相差小於一年,則結束日期就不用寫年份了;在這種情況下,如果月份開始和結束日期如果在同一個月,則結束日期月份也不用寫了。
另外, 如果開始日期年份是當前年份,且結束日期與開始日期小於一年,則開始日期的年份也不用寫。
function makeFriendlyDates(arr) { //當前年份2017 var arr1 = arr[0].split("-"); var arr2 = arr[1].split("-");var month = { //月份 "01":"January", "02":"February", "03":"March", "04":"April", "05":"May", "06":"June", "07":"July", "08":"August", "09":"September", "10":"October", "11":"November", "12":"December" }; function getDay(day){ //日期結尾 if(day == "1" || day == "21" || day == "31"){ return "st"; }else if(day == "2" || day == "22"){ return "nd"; }else if(day == "3" || day == "23"){ return "rd"; }else { return "th"; } } function getD(day){ //將01、02等改為1、2等 添加結尾 var n; if(day / 10 < 1){ n = day % 10; }else{ n = day; } return n + getDay(n); } function getDa(year, mon, day){ //拼接 var dArr; if(!mon && !year){ dArr = getD(day); }else if(!year){ dArr = month[mon] +" " + getD(day); }else{ dArr = month[mon] +" " + getD(day)+ ", " + year; } return dArr; } var cha = arr2.join("") - arr1.join(""); if(cha < 0){ //不合理 return undefined; }else if(cha > 0){ //不是同一天 if(cha < 10000){ //相差1年以內 if(arr1[0] == 2017){ //1年以內且開始年份為當前年份 if(arr1[1] == arr2[1]){ //月份相同 return [getDa("", arr1[1], arr1[2]), getDa("", "", arr2[2])]; }else{ //月份不同 return [getDa("", arr1[1], arr1[2]), getDa("", arr2[1], arr2[2])]; } }else{ //1年以內且開始年份非當前年份 return [getDa(arr1[0], arr1[1], arr1[2]), getDa("", arr2[1], arr2[2])]; } }else{ //相差大於1年 return [getDa(arr1[0], arr1[1], arr1[2]), getDa(arr2[0], arr2[1], arr2[2])]; } }else{ //是同一天 return [getDa(arr1[0], arr1[1], arr1[2])]; } } makeFriendlyDates(["2001-12-20", "2001-12-20"]);