浅谈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 嵌套的函数(作用域链)
Mar 15 Javascript
JavaScript中对象property的删除方法介绍
Dec 30 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
Nov 30 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
JavaScript基础之this详解
Jun 04 Javascript
JavaScript编程设计模式之构造器模式实例分析
Oct 25 Javascript
jQuery Dom元素操作技巧
Feb 04 jQuery
vue iView 上传组件之手动上传功能
Mar 16 Javascript
vue 点击按钮增加一行的方法
Sep 07 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
Vue 2.0双向绑定原理的实现方法
Oct 23 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
2017/04/19 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python open读写文件实现脚本
2008/09/06 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
python实现微信防撤回神器
2019/04/29 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
经贸日语专业个人求职信
2013/12/13 职场文书
护理个人求职信范文
2014/01/08 职场文书
政府门卫岗位职责
2014/04/29 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
毕业生找工作求职信
2014/08/05 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
英文感谢信范文
2015/01/21 职场文书
全陪导游词开场白
2015/05/29 职场文书