Moment: 1文字のfromNow()形式

作成日 2015年11月29日  ·  21コメント  ·  ソース: moment/moment

moment().fromNow();フォーマットを説明するために1文字を使用しようとしています

例: 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件

今のところ、この機能はありません。
http://momentjs.com/docs/#/displaying/fromnow/を参照できます

実際には、これを行うために独自の関数を作成できるため、momentが本当にそれをサポートする必要があるかどうかはわかりません。
興味深い質問の1つは、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 /

この機能がコアコードベースに実装されることを本当に望んでいます。 これらのインスタグラムスタイルの短い略語は、最近かなり普及しています。

はい、同意します。1つの言語に合わせてカスタマイズするのは非常に簡単です。 しかし...アプリが複数のロケールをサポートする必要がある場合、突然、サポートするすべての言語でアプリのカスタマイズを処理する必要があります。 瞬間のコミュニティの力にその負担を負わせるのは本当に素晴らしいことです。

複数のロケールをサポートする必要があるアプリだけでなく、短い形式と長い形式の両方を異なる部分で表示する必要があるアプリも、これから恩恵を受けます。 今、私は私の回避策を使用する必要があります。

+ 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'
    }
  });

2番目の機能を持つ+1; 短い形式と長い形式の両方を利用できるようにしたい。
私は英語で月の「mo」を提案します

たとえば、 1日1年、または何かの形式を追加するための私のソリューションは、次のようになりました。

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 評価