Moment: 单个字母 fromNow() 格式

创建于 2015-11-29  ·  21评论  ·  资料来源: moment/moment

试图用一个字母来描述moment().fromNow();格式

示例:反对1 hour1 day1 week 。 希望有1h1d1w

使用像这样的单字母格式是我缺少的设置吗?

最有用的评论

您可以通过语言环境进行设置:

  moment.locale('en', {
    relativeTime: {
      future: 'in %s',
      past: '%s ago',
      s:  'seconds',
      ss: '%ss',
      m:  'a minute',
      mm: '%dm',
      h:  'an hour',
      hh: '%dh',
      d:  'a day',
      dd: '%dd',
      M:  'a month',
      MM: '%dM',
      y:  'a year',
      yy: '%dY'
    }
  });

所有21条评论

我认为 moment 现在没有这个功能。
可以参考http://momentjs.com/docs/#/displaying/fromnow/

其实你可以写你自己的函数来做到这一点,所以不确定moment是否真的需要支持它。
一个有趣的问题是,如果 moment 支持此功能,那么“几秒钟”的短标签是什么?

这将是一个“s”(例如:5s、35s)但是,有秒数。 处理项目中的少量房地产。

您可以通过语言环境进行设置:

  moment.locale('en', {
    relativeTime: {
      future: 'in %s',
      past: '%s ago',
      s:  'seconds',
      ss: '%ss',
      m:  'a minute',
      mm: '%dm',
      h:  'an hour',
      hh: '%dh',
      d:  'a day',
      dd: '%dd',
      M:  'a month',
      MM: '%dM',
      y:  'a year',
      yy: '%dY'
    }
  });

是的,区域设置是推荐的方法。

请参阅: http ://momentjs.com/docs/#/customization/relative -time/

我真的很想看到这个功能在核心代码库中实现。 这些天来,这些 instagram 风格的简短缩写非常普遍。

是的,我同意,针对一种语言进行自定义非常容易。 但是...如果您的应用程序需要支持多种语言环境,您突然需要在您支持的所有语言中进行自定义。 让 moment 社区的力量来承担这个负担真的很好。

不仅需要支持多个区域设置的应用程序,而且需要在不同部分显示短格式和长格式的应用程序也将从中受益。 现在,我必须使用我的解决方法。

+1 - 是什么让这一刻如此美好

+1(和凹凸),也很想看到这种情况发生

+1 - 现在正在寻找这个。

:+1:

👍

+1

+99999999999999

+1 请

+1

var timeSince = function(date) {
  if (typeof date !== 'object') {
    date = new Date(date);
  }

  var seconds = Math.floor((new Date() - date) / 1000);
  var intervalType;

  var interval = Math.floor(seconds / 31536000);
  if (interval >= 1) {
    intervalType = 'y';
  } else {
    interval = Math.floor(seconds / 2592000);
    if (interval >= 1) {
      intervalType = 'm';
    } else {
      interval = Math.floor(seconds / 86400);
      if (interval >= 1) {
        intervalType = 'd';
      } else {
        interval = Math.floor(seconds / 3600);
        if (interval >= 1) {
          intervalType = "h";
        } else {
          interval = Math.floor(seconds / 60);
          if (interval >= 1) {
            intervalType = "m";
          } else {
            interval = seconds;
            intervalType = "now";
          }
        }
      }
    }
  }

  if (interval > 1 || interval === 0) {
    intervalType += 's';
  }

  return interval + ' ' + intervalType;
};

来源: https :

+1 我们需要它

@dlindahl 非常感谢您提供

我为英语和德语做了这个:

  moment.updateLocale('en', {
    relativeTime: {
      future : 'in %s',
      past   : '%s ago',
      s  : function (number, withoutSuffix) {
        return withoutSuffix ? 'now' : 'a few seconds';
      },
      m  : '1m',
      mm : '%dm',
      h  : '1h',
      hh : '%dh',
      d  : '1d',
      dd : '%dd',
      M  : '1mth',
      MM : '%dmth',
      y  : '1y',
      yy : '%dy'
    }
  });
  moment.updateLocale('de', {
    relativeTime: {
      future : 'in %s',
      past : 'vor %s',
      s  : function (number, withoutSuffix) {
        return withoutSuffix ? 'jetzt' : 'ein paar Sekunden';
      },
      m  : '1min',
      mm : '%dmin',
      h  : '1Std',
      hh : '%dStd',
      d  : '1T',
      dd : '%dT',
      M  : '1M',
      MM : '%dM',
      y  : '1J',
      yy : '%dJ'
    }
  });

+1 具有第二个功能; 我想要短+长两种形式。
我建议在英语中使用“mo”表示月份

我添加格式的解决方案,例如一天一年或某种格式,我这样做:

let time=moment(re.date).fromNow(true);
let format=this.formatDate(time);
formatDate(date){
    let strDate=date.split(" ");
    let format="";
    if(strDate[0]=="un"||strDate[0]=="a"){
      strDate[0]="1";
      format=strDate[0]+strDate[1][0];
      return format
    }
    format=strDate[0]+strDate[1][0];
    return format

  }

返回例如 1d, 3y, 1m

问候

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

vbullinger picture vbullinger  ·  3评论

alvarotrigo picture alvarotrigo  ·  3评论

slavafomin picture slavafomin  ·  3评论

chitgoks picture chitgoks  ·  3评论

tanepiper picture tanepiper  ·  3评论