angularjs --- 自定义时间格式的过滤器

项目中需要时间格式的过滤器,像微信的时间显示一样,如下的样式

.filter('FormatStrDate', function() {
  // 两个时间相差的天数
  //sDate1和sDate2是2006-12-18格式
  function  DateDiff(sDate1,  sDate2){
    var  aDate,  oDate1,  oDate2,  iDays;
    aDate  =  sDate1.split("-");
    oDate1  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0]);   //转换为12-18-2006格式
    aDate  =  sDate2.split("-");
    oDate2  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0]);
    iDays  =  parseInt(Math.abs(oDate1  -  oDate2)  /  1000  /  60  /  60  /24);    //把相差的毫秒数转换为天数
    return  iDays
  }
  // 获取固定时间格式2006-12-18格式
   function currentTime_datestyle () {
    var today = new Date();
    var year = today.getFullYear();
    var mouth = today.getMonth()+1;
    var date = today.getDate();
    var hours = today.getHours();
    var minutes = today.getMinutes();
    var seconds = today.getSeconds();
    var milliseconds = today.getMilliseconds();
    if(mouth < 10){
      mouth = "0"+mouth.toString()
    }else{
    }
    if(date < 10){
      date = "0"+date.toString()
    }else{
    }
    if(hours < 10){
      hours = "0"+hours.toString()
    }else{
    }
    if(minutes < 10){
      minutes = "0"+minutes.toString()
    }else{
    }
    if(seconds < 10){
      seconds = "0"+seconds.toString()
    }else{
    }
    if(10 > milliseconds){
      milliseconds = "00"+milliseconds.toString()
    }else if((10 <= milliseconds) && (100 > milliseconds)){
      milliseconds = "0"+milliseconds.toString()
    }else{
      milliseconds = milliseconds.toString()
    }
    return year+"-"+mouth+"-"+date+" "+hours+":"+minutes+"";
  }
  return function(input) {
    var currenttime = currentTime_datestyle ();
    var date = new Date(input);
    var show_day = new Array('星期一','星期二','星期三','星期四','星期五','星期六','星期日');
    var today = show_day[date.getDay()-1];
    var formatDate = "";
    var sDate1 = input.substr(0,11);
    var sDate2 = currenttime.substr(0,11);
    if(currenttime.substr(0,11) == input.substr(0,11) ){   //判断是否为当天时间
      var showtime = input.substr(11,5);
      if(showtime <= 12 ){
        formatDate  = "上午" + " " + showtime
      }else{
        formatDate  = "下午" + " " + showtime
      }
    }
    //判断该时间段为一周内的时间
    else if(DateDiff(sDate1,sDate2) == 1){
      formatDate  = "昨天"
    }else if(DateDiff(sDate1,sDate2) == 2){
      if( today == "星期一" || today == "星期二"){
        formatDate  = input.substr(0,11);
      }else{
        formatDate  = show_day[date.getDay()-3];
      }
    }else if(DateDiff(sDate1,sDate2) == 3){
      if( today == "星期一" || today == "星期二" || today == "星期三"){
        formatDate  = input.substr(0,11);
      }else{
        formatDate  = show_day[date.getDay()-4];
      }
    }else if(DateDiff(sDate1,sDate2) == 4){
      if( today == "星期一" || today == "星期二" || today == "星期三" || today == "星期四"){
        formatDate  = input.substr(0,11);
      }else{
        formatDate  = show_day[date.getDay()-5];
      }
    }else if(DateDiff(sDate1,sDate2) == 5){
      if( today == "星期一" || today == "星期二" || today == "星期三" || today == "星期四" || today == "星期五"){
        formatDate  = input.substr(0,11);
      }else{
        formatDate  = show_day[date.getDay()-6];
      }
    }else if(DateDiff(sDate1,sDate2) == 6){
      if( today == "星期一" || today == "星期二" || today == "星期三" || today == "星期四" || today == "星期五" || today == "星期六"){
        formatDate  = input.substr(0,11);
      }else{
        formatDate  = show_day[date.getDay()-7];
      }
    }else {
      formatDate  = input.substr(0,11);
    }
    return formatDate ;
  }
})


在html中的代码:

<i class="newstime">{{item.contents[item.contents.length - 1].time | FormatStrDate}}</i>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值