【Javascript】日期智能化显示

作者: 雨水之后 | 来源:发表于2017-11-29 14:30 被阅读15次

一个时间段,有开始及结束日期,格式均为YYYY-MM-DD

函数传入参数的格式为makeFriendlyDates(["2016-07-01", "2018-10-04"]);,前者为开始日期,后者为结束日期。

函数期望返回结果为以下格式:

如果年月日均不相同,则返回:[ 'July 1st, 2016', 'October 4th, 2018' ]
如果年份相同,则返回:[ 'July 1st', 'October 4th' ]
如果年份和月份都相同,则返回:[ 'July 1st', '4th' ]

function makeFriendlyDates(arr) {

  //创建结果数组,按照新格式存入
  var result = arr.map(function(e){
    return newDateFormat(e);
  });

  //如果年份相同
  if(result[0].substr(-4)===result[1].substr(-4)){

    //两个字符串都去掉年份
    result = result.map(function(e){
      return e.substring(0,e.length-6);
    });

    //定义月份名称的正则
    //挑出开始月份及结束月份
    var regMonth = /[a-zA-Z]{3,9}/g;
    var startMonth = result[0].match(regMonth).join('');
    var endMonth = result[1].match(regMonth).join('');

    //月份相同的情况
    if(startMonth===endMonth){
      //结束日期把月份删掉
      result[1] = result[1].substring(endMonth.length).trim();
      return result;
    }
    else{
      return result;
    }
  }
  else{
    return result;
  }

  //转化日期表现格式的函数
  function newDateFormat(str){

    //把字符串变为数组便于处理
    let arr = str.split("-");
    return getMonth(arr[1]) + " " + getDay(arr[2]) + ", " + arr[0];
  }

  //获取月份名称
  function getMonth(m){
    let month = ['January','February','March','April','May','June','July','August','September','October','November','December'];
    m = parseInt(m);
    return month.filter(function(e,i){
      if(m===i+1){
        return month[m-1];
      }
    }).join("");
  }

  //获取日名称
  function getDay(d){
    d = parseInt(d);
    if(d===1 || d===21 || d===31){
      return d+"st";
    }
    else if(d===2 || d==22){
      return d+"nd";
    }
    else if(d===3 || d===23){
      return d+"rd";
    }
    else if((d>=4&&d<=20)||(d>=24&&d<=30)){
      return d+"th";
    }
  }

}

THE END.

相关文章

  • 【Javascript】日期智能化显示

    一个时间段,有开始及结束日期,格式均为YYYY-MM-DD。 函数传入参数的格式为makeFriendlyDate...

  • Moment 使用笔记

    一、简介 是一个 JavaScript 日期处理类库,用于解析、检验、操作、以及显示日期 安装 引入 二、具体使用...

  • momentjs 获取两个日期相隔天数

    Moment.js 是一个 JavaScript 日期处理类库,用于解析、检验、操作、以及显示日期,vue项目中经...

  • moment.js的常用方法

    moment.js 是一个 JavaScript 日期处理类库,用于解析、检验、操作、以及显示日期。因为项目中经常...

  • 最彪的时间处理库:Moment.js

    简介 Moment.js是一个JavaScript日期处理类库,用于解析、检验、操作、以及显示日期等,如果你的站点...

  • JavaScript获取默认显示当日日期

    1:时间格式为2021/4/2 2:时间格式为yyyy-MM-dd2021-04-01

  • 日期显示

    日期显示(3分) 题目内容: 编写一个程序, 接收用户录入的日期信息并且将其显示出来. 其中, 输入日期的形式为月...

  • 日期显示

  • javascript基础学习纪录篇-日期

    var d = new Date(); 默认情况下,JavaScript 将使用浏览器的时区并将日期显示为全文本字...

  • javascript

    javascript显示数据 JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据:...

网友评论

    本文标题:【Javascript】日期智能化显示

    本文链接:https://www.haomeiwen.com/subject/jewubxtx.html