首页 > 解决方案 > 如何添加“大约几分钟前、大约几小时前等;” 在 .filter 中用于 angular/ionic v1 项目

问题描述

我的问题是如何在 ionic v1 项目中为 wordpress 的 JS 过滤器中添加从现在开始、以前......等等,而不是使用 UTC 日期。

我正在使用 wordpress 本机 ionic v1 应用程序,因此这对于获取应用程序中每个帖子的确切日期非常重要。

我不喜欢将日期显示为UTC,因为它太长了..我只需要(1小时前,一年..等)!谢谢。

这是我的代码:

.filter('timeAgo', function(){
return function timeAgo(time){
    switch (typeof time) {
        case 'number':
          break;
        case 'string':
          time = +new Date(time);
          break;
        case 'object':
          if (time.constructor === Date) time = time.getTime();
          break;
        default:
          time = +new Date();
      }
      var time_formats = [
        [60, 'seconds', 1], // 60
        [120, '1 minute ago', '1 minute from now'], // 60*2
        [3600, 'minutes', 60], // 60*60, 60
        [7200, '1 hour ago', '1 hour from now'], // 60*60*2
        [86400, 'hours', 3600], // 60*60*24, 60*60
        [172800, 'Yesterday', 'Tomorrow'], // 60*60*24*2
        [604800, 'days', 86400], // 60*60*24*7, 60*60*24
        [1209600, 'Last week', 'Next week'], // 60*60*24*7*4*2
        [2419200, 'weeks', 604800], // 60*60*24*7*4, 60*60*24*7
        [4838400, 'Last month', 'Next month'], // 60*60*24*7*4*2
        [29030400, 'months', 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
        [58060800, 'Last year', 'Next year'], // 60*60*24*7*4*12*2
        [2903040000, 'years', 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
        [5806080000, 'Last century', 'Next century'], // 60*60*24*7*4*12*100*2
        [58060800000, 'centuries', 2903040000] // 60*60*24*7*4*12*100*20, 60*60*24*7*4*12*100
      ];
      var seconds = (+new Date() - time) / 1000,
        token = 'ago',
        list_choice = 1;
    
      if (seconds == 0) {
        return 'Just now'
      }
      if (seconds < 0) {
        seconds = Math.abs(seconds);
        token = 'from now';
        list_choice = 2;
      }
      var i = 0,
        format;
      while (format = time_formats[i++])
        if (seconds < format[0]) {
          if (typeof format[2] == 'string')
            return format[list_choice];
          else
            return Math.floor(seconds / format[2]) + ' ' + format[1] + ' ' + token;
        }
      return time;
    }
    
    var aDay = 24 * 60 * 60 * 1000;
    console.log(time_ago(new Date(Date.now() - aDay)));
    console.log(time_ago(new Date(Date.now() - aDay * 2)));
    
}

我需要知道我的代码出了什么问题或错误在哪里?

标签: javascriptangularjsdate-formattingionic-v1

解决方案


推荐阅读