淺談js-FCC算法Friendly Date Ranges(詳解)
讓日期區(qū)間更友好!
把常見的日期格式如:YYYY-MM-DD 轉換成一種更易讀的格式。
易讀格式應該是用月份名稱代替月份數(shù)字,用序數(shù)詞代替數(shù)字來表示天 (1st 代替 1).
記住不要顯示那些可以被推測出來的信息: 如果一個日期區(qū)間里結束日期與開始日期相差小于一年,則結束日期就不用寫年份了。月份開始和結束日期如果在同一個月,則結束日期月份就不用寫了。
另外, 如果開始日期年份是當前年份,且結束日期與開始日期小于一年,則開始日期的年份也不用寫。
我的代碼:
function makeFriendlyDates(arr) {
//獲得目前的年份
var yearnow=(new Date()).getFullYear();
//把傳入的參數(shù)放入字符串數(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"];
//初始化幾個后面用到的數(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);
}
//把兩個日期放在同一個數(shù)組里輸出(如果是同年同月同日,代碼里的date2str無用,所以代碼是可以改善的)。
datearr[datearr.length]=date1str;
if(date1.toString()!==date2.toString()){
datearr[datearr.length]=date2str;
}
return datearr;
}
特殊情況下,date2str是沒用的,有空改善一下。
以上這篇淺談js-FCC算法Friendly Date Ranges(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
javascript 操作cookies及正確使用cookies的屬性
在 JS(JavaScript) 操作cookies比較復雜,在 ASP 里面我們只需要知道 cookie 的名稱、cookie 的值就行了,而 JS 里面,我們面對的是 cookie 的字符串,你自己編寫這個字符串寫入客戶端,然后自己解析這個字符串。2009-10-10
利用CSS、JavaScript及Ajax實現(xiàn)高效的圖片預加載
圖片預加載想必大家都不陌生吧,實現(xiàn)預加載圖片有很多方法,包括使用CSS、JavaScript及兩者的各種組合。這些技術可根據(jù)不同設計場景設計出相應的解決方案,十分高效2013-10-10
原生js基于canvas實現(xiàn)一個簡單的前端截圖工具代碼實例
這篇文章主要介紹了原生js基于canvas實現(xiàn)一個簡單的前端截圖工具代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-09-09

