浅谈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实现动态CSS换肤技术的脚本
Jun 29 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
Oct 27 Javascript
echarts饼图扇区添加点击事件的实例
Oct 16 Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 Javascript
Vue通过ref父子组件拿值方法
Sep 12 Javascript
使用JavaScript解析URL的方法示例
Mar 01 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
vue-cli3添加模式配置多环境变量的方法
Jun 05 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
Jul 27 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
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
详解PHP匿名函数与注意事项
2016/03/29 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
PHP多维数组排序array详解
2017/11/21 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
Ajax基础知识详解
2017/02/17 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python通过select实现异步IO的方法
2015/06/04 Python
基python实现多线程网页爬虫
2015/09/06 Python
Python AES加密实例解析
2018/01/18 Python
python format 格式化输出方法
2018/07/16 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
英国森林假期:Forest Holidays
2021/01/01 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
事业单位考察材料范文
2014/12/25 职场文书
高一军训口号
2015/12/25 职场文书
导游词之安徽巢湖
2019/12/26 职场文书