js-FCC 알고리즘 Friendly Date Ranges(상세 설명)
2512 단어 fcc 알고리즘
예 를 들 어 YYYY-MM-DD 를 더 읽 기 쉬 운 형식 으로 변환 합 니 다.
읽 기 쉬 운 형식 은 월 이름 으로 월 숫자 를 대체 하고 숫자 대신 서수 어 로 일(1st 대체 1)을 표시 해 야 한다.
추측 할 수 있 는 정 보 를 표시 하지 마 세 요.한 날짜 구간 에서 종료 날짜 가 시작 날짜 와 1 년 차이 가 나 면 종료 날 짜 는 연 도 를 쓰 지 않 아 도 됩 니 다.월 시작 과 종료 날짜 가 같은 달 이면 종료 날 짜 는 월 에 쓰 지 않 아 도 된다.
또한 시작 날짜 연도 가 현재 연도 이 고 종료 날짜 와 시작 날짜 가 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;
}
특별한 상황 에서 date2str 는 소 용이 없 으 니 시간 이 있 으 면 개선 하 세 요.이상 의 이 간단 한 설명 은 js-FCC 알고리즘 Friendly Date Ranges(상세 한 설명)는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 많은 사랑 을 주 셨 으 면 좋 겠 습 니 다.