浅谈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 相关文章推荐
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
Mar 11 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
jQuery实现的模拟弹出窗口功能示例
Nov 24 Javascript
快速入门Vue
Dec 19 Javascript
js实现三级联动效果(简单易懂)
Mar 27 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
Sep 26 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
详解 TypeScript 枚举类型
Nov 02 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安全编程之加密功能
2006/10/09 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
python文件与目录操作实例详解
2016/02/22 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python3 max()函数基础用法
2019/02/19 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
python类中super() 的使用解析
2019/12/19 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
详解Flask前后端分离项目案例
2020/07/24 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
生产厂长岗位职责
2014/02/21 职场文书
财务检查整改报告
2014/11/06 职场文书
承诺书应该怎么写?
2019/09/10 职场文书