浅谈js-FCC算法FriendlyDateRanges(详解)-创新互联
让日期区间更友好!
创新互联从2013年开始,是专业互联网技术服务公司,拥有项目网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元咸宁做网站,已为上家服务,为咸宁各地企业和个人服务,联系电话:13518219792把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式。
易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1).
记住不要显示那些可以被推测出来的信息: 如果一个日期区间里结束日期与开始日期相差小于一年,则结束日期就不用写年份了。月份开始和结束日期如果在同一个月,则结束日期月份就不用写了。
另外, 如果开始日期年份是当前年份,且结束日期与开始日期小于一年,则开始日期的年份也不用写。
我的代码:
function makeFriendlyDates(arr) { //获得目前的年份 var yearnow=(new Date()).getFullYear(); //把传入的参数放入字符串数组,创建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"]; //初始化几个后面用到的数组 var date1str=""; var date2str=""; var datearr=[]; //给日期加后缀的函数 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); } //把两个日期放在同一个数组里输出(如果是同年同月同日,代码里的date2str无用,所以代码是可以改善的)。 datearr[datearr.length]=date1str; if(date1.toString()!==date2.toString()){ datearr[datearr.length]=date2str; } return datearr; }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:浅谈js-FCC算法FriendlyDateRanges(详解)-创新互联
文章出自:http://pwwzsj.com/article/cdeijd.html