浅谈js-FCC算法Friendly Date Ranges(详解)


Posted in Javascript onApril 10, 2017

让日期区间更友好!

把常见的日期格式如: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;
}

特殊情况下,date2str是没用的,有空改善一下。

以上这篇浅谈js-FCC算法Friendly Date Ranges(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery tab标签页的制作
May 10 Javascript
面向对象的Javascript之一(初识Javascript)
Jan 20 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 Javascript
jQuery中:nth-child选择器用法实例
Dec 31 Javascript
jQuery div拖拽用法实例
Jan 14 Javascript
纯前端JavaScript实现Excel IO案例分享
Aug 26 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 Javascript
vue 2.0封装model组件的方法
Aug 03 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
vue2.0 解决抽取公用js的问题
Jul 31 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
Apr 10 #Javascript
js实现适配不同的屏幕大小
Apr 10 #Javascript
JS闭包可被利用的常见场景小结
Apr 09 #Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 #jQuery
作为老司机使用 React 总结的 11 个经验教训
Apr 08 #Javascript
详解angular element()方法使用
Apr 08 #Javascript
angularjs的select使用及默认选中设置
Apr 08 #Javascript
You might like
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python使用socket进行简单网络连接的方法
2015/04/29 Python
浅谈python中的占位符
2017/11/09 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
归元寺导游词
2015/02/06 职场文书
毕业实习单位意见
2015/06/04 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang