浅谈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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
Aug 29 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
Oct 19 Javascript
AngularJS动态绑定HTML的方法分析
Nov 07 Javascript
angular分页指令操作
Jan 09 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
JS实现的随机排序功能算法示例
Jun 09 Javascript
JS检测是否可以访问公网服务器功能代码
Jun 19 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
Feb 08 Javascript
vue写h5页面的方法总结
Feb 12 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
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
JavaScript基础知识及常用方法总结
2016/01/10 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JavaScript基础之AJAX简单的小demo
2017/01/29 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
自我评价200字分享
2013/12/17 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
征兵宣传标语
2014/06/20 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
2014年生产部工作总结
2014/12/17 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
政协委员个人总结
2015/03/03 职场文书
联欢会开场白
2015/06/01 职场文书
停发工资证明范本
2015/06/12 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书