淺談js-FCC算法Friendly Date Ranges(詳解)
讓日期區(qū)間更友好!
把常見的日期格式如:YYYY-MM-DD 轉(zhuǎn)換成一種更易讀的格式。
易讀格式應(yīng)該是用月份名稱代替月份數(shù)字,用序數(shù)詞代替數(shù)字來表示天 (1st 代替 1).
記住不要顯示那些可以被推測(cè)出來的信息: 如果一個(gè)日期區(qū)間里結(jié)束日期與開始日期相差小于一年,則結(jié)束日期就不用寫年份了。月份開始和結(jié)束日期如果在同一個(gè)月,則結(jié)束日期月份就不用寫了。
另外, 如果開始日期年份是當(dāng)前年份,且結(jié)束日期與開始日期小于一年,則開始日期的年份也不用寫。
我的代碼:
function makeFriendlyDates(arr) { //獲得目前的年份 var yearnow=(new Date()).getFullYear(); //把傳入的參數(shù)放入字符串?dāng)?shù)組,創(chuàng)建Date類型也可以 var date1=arr[0].split("-"); var date2=arr[1].split("-"); //月份的英文表示 var months=["January","February","March","April","May","June","July","August","September","October","November","December"]; //初始化幾個(gè)后面用到的數(shù)組 var date1str=""; var date2str=""; var datearr=[]; //給日期加后綴的函數(shù) function friendlydate(str){ var str2num=Number(str); switch(str2num){ case 1: str2num+="st"; break; case 2: str2num+="nd"; break; case 3: str2num+="rd"; break; default: str2num+="th"; } return str2num; } //date1的字符串表示大部分情況下都是需要年月日的。date2的如果不是在同年同月,大部分情況下都是需要月日的 date1str=months[date1[1]-1]+" "+friendlydate(date1[2])+", "+date1[0]; if(date1[1]===date2[1]&&date1[0]===date2[0]){ date2str=friendlydate(date2[2]); }else{ date2str=months[date2[1]-1]+" "+friendlydate(date2[2]); } //如果大于一年,date2加上年份;如果小于一年,而且date1的日期是今年,那么去掉date1的年份。 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+=", "+date2[0]; }else if(date1[0]==yearnow){ date1str=date1str.slice(0,-6); } //把兩個(gè)日期放在同一個(gè)數(shù)組里輸出(如果是同年同月同日,代碼里的date2str無用,所以代碼是可以改善的)。 datearr[datearr.length]=date1str; if(date1.toString()!==date2.toString()){ datearr[datearr.length]=date2str; } return datearr; }
特殊情況下,date2str是沒用的,有空改善一下。
以上這篇淺談js-FCC算法Friendly Date Ranges(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript腳本性能優(yōu)化注意事項(xiàng)
本文總結(jié)了我在JavaScript編程中所找到的提高JavaScript運(yùn)行性能的一些方法,其實(shí)這些經(jīng)驗(yàn)都基于幾條原則2008-11-11JavaScript遍歷數(shù)組的方法代碼實(shí)例
這篇文章主要介紹了JavaScript遍歷數(shù)組的方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Javascript實(shí)現(xiàn)倒計(jì)時(shí)(防頁(yè)面刷新)實(shí)例
本文分享了Javascript實(shí)現(xiàn)倒計(jì)時(shí)并且頁(yè)面不刷新的實(shí)例,具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12JavaScript如何一次性展示幾萬條數(shù)據(jù)
本文主要介紹了JavaScript一次性展示幾萬條數(shù)據(jù)的實(shí)現(xiàn)方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-03-03js原生實(shí)現(xiàn)FastClick事件的實(shí)例
下面小編就為大家?guī)硪黄猨s原生實(shí)現(xiàn)FastClick事件的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11jquery+css3實(shí)現(xiàn)網(wǎng)頁(yè)背景花瓣隨機(jī)飄落特效
在qq空間可以自定義一些插件,裝飾空間,大家通常就是復(fù)制代碼到空間粘貼,會(huì)實(shí)現(xiàn)非常美觀的效果,有的會(huì)隨機(jī)飄落一些花瓣,那么這種效果用代碼怎么實(shí)現(xiàn)的呢,下面小編給大家詳解jquery實(shí)現(xiàn)網(wǎng)頁(yè)背景花瓣隨機(jī)飄落特效,需要的朋友可以參考下2015-08-08