zoukankan      html  css  js  c++  java
  • Friendly Date Ranges 让日期区间更友好

    把常见的日期格式如:YYYY-MM-DD 转换成一种更易读的格式。

    易读格式应该是用月份名称代替月份数字,用序数词代替数字来表示天 (1st 代替 1).

    记住不要显示那些可以被推测出来的信息: 如果一个日期区间里结束日期与开始日期相差小于一年,则结束日期就不用写年份了;在这种情况下,如果月份开始和结束日期如果在同一个月,则结束日期月份也不用写了。

    另外, 如果开始日期年份是当前年份,且结束日期与开始日期小于一年,则开始日期的年份也不用写。

    function makeFriendlyDates(arr) {   //当前年份2017
      var arr1 = arr[0].split("-");
      var arr2 = arr[1].split("-");var month = {                   //月份
        "01":"January",
        "02":"February",
        "03":"March",
        "04":"April",
        "05":"May",
        "06":"June",
        "07":"July",
        "08":"August",
        "09":"September",
        "10":"October",
        "11":"November",
        "12":"December"
      };
      function getDay(day){      //日期结尾
        if(day == "1" || day == "21" || day == "31"){
          return "st";
        }else if(day == "2" || day == "22"){
          return "nd";
        }else if(day == "3" || day == "23"){
          return "rd";
        }else {
          return "th";
        }  
      }
      function getD(day){          //将01、02等改为1、2等 添加结尾
        var n;
        if(day / 10 < 1){
          n = day % 10;
        }else{
          n = day;
        }
        return n + getDay(n);
      }
      function getDa(year, mon, day){        //拼接
        var dArr;
        if(!mon && !year){
          dArr = getD(day);
        }else if(!year){
          dArr = month[mon] +" " + getD(day);
        }else{
          dArr = month[mon] +" " + getD(day)+ ", " + year;
        }
        return dArr;
      }
      var cha = arr2.join("") - arr1.join("");  
      if(cha < 0){               //不合理
        return undefined;
      }else if(cha > 0){        //不是同一天
        if(cha < 10000){             //相差1年以内
          if(arr1[0] == 2017){            //1年以内且开始年份为当前年份
            if(arr1[1] == arr2[1]){            //月份相同        
              return [getDa("", arr1[1], arr1[2]), getDa("", "", arr2[2])];
            }else{                             //月份不同
              return [getDa("", arr1[1], arr1[2]), getDa("", arr2[1], arr2[2])];
            }
          }else{                          //1年以内且开始年份非当前年份
            return [getDa(arr1[0], arr1[1], arr1[2]), getDa("", arr2[1], arr2[2])];
          }
        }else{                       //相差大于1年
          return [getDa(arr1[0], arr1[1], arr1[2]), getDa(arr2[0], arr2[1], arr2[2])];
        }         
      }else{                  //是同一天
        return [getDa(arr1[0], arr1[1], arr1[2])];
      }
    }
    makeFriendlyDates(["2001-12-20", "2001-12-20"]);
  • 相关阅读:
    eval是只读数据,bind是可更新的.
    数据库中的html在页面上显示
    kindeditor asp.net 模板问题 clientidmode="Static"
    我对if(!this.IsPostBack)的理解
    asp.net正则表达式
    由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。
    IIS7错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")...
    Microsoft.AspNet.FriendlyUrls发布到IIS后404报错的解决方案
    jQuery 绑定事件
    jQuery 位置
  • 原文地址:https://www.cnblogs.com/leina-2017-09-01/p/10587578.html
Copyright © 2011-2022 走看看