浅谈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 相关文章推荐
项目实践之javascript技巧
Dec 06 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
Dec 11 Javascript
jQuery 获取URL的GET参数值的小例子
Apr 18 Javascript
三种带箭头提示框总结实例
Jun 14 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
浅述节点的创建及常见功能的实现
Dec 15 Javascript
JS实现身份证输入框的输入效果
Aug 21 Javascript
浅谈JavaScript的innerWidth与innerHeight
Oct 12 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
Bootstrap Table中的多选框删除功能
Jul 15 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 Javascript
JS深入学习之数组对象排序操作示例
May 01 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 日漫
php之XML转数组函数的详解
2013/06/07 PHP
BOM与DOM的区别分析
2010/10/26 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
python清除字符串里非字母字符的方法
2015/07/02 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
python reduce 函数使用详解
2017/12/05 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
Python小进度条显示代码
2019/03/05 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
关于运动会的口号
2014/06/07 职场文书
教师师德承诺书2016
2016/03/25 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫