Moment: Format d'une seule lettre fromNow()

Créé le 29 nov. 2015  ·  21Commentaires  ·  Source: moment/moment

Tenter d'utiliser une lettre pour décrire le format avec moment().fromNow();

Exemple : opposé à 1 hour , 1 day , 1 week . Vous cherchez à avoir 1h , 1d , 1w .

Est-ce un paramètre qui me manque pour utiliser un format à une seule lettre comme celui-ci ?

Commentaire le plus utile

Vous pouvez définir ceci via locale :

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

Tous les 21 commentaires

Je ne pense pas que moment ait cette fonctionnalité pour le moment.
Vous pouvez vous référer à http://momentjs.com/docs/#/displaying/fromnow/

En fait, vous pouvez écrire votre propre fonction pour le faire, donc vous ne savez pas si le moment doit vraiment la prendre en charge.
Une question intéressante est si moment prend en charge cette fonctionnalité, alors quelle est l'étiquette courte pour "quelques secondes" ?

Ce serait un "s" (exemple: 5s, 35s) mais, ayez le nombre de secondes. Traiter une petite quantité de biens immobiliers sur un projet.

Vous pouvez définir ceci via locale :

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

Oui, la configuration des paramètres régionaux est l'approche recommandée.

Voir : http://momentjs.com/docs/#/customization/relative -time/

J'aimerais vraiment que cette fonctionnalité soit implémentée dans la base de code principale. Ces abréviations courtes de style instagram sont assez omniprésentes de nos jours.

Oui, je suis d'accord, c'est assez facile à personnaliser pour une langue. Mais... si votre application doit prendre en charge plusieurs paramètres régionaux, vous devez soudainement gérer sa personnalisation dans toutes les langues que vous prenez en charge. Ce serait vraiment bien que le pouvoir de la communauté du moment prenne ce fardeau.

Non seulement les applications qui doivent prendre en charge plusieurs paramètres régionaux, mais les applications qui doivent afficher à la fois le format court et le format long dans différentes parties en bénéficieraient également. En ce moment, je dois utiliser une solution de contournement dans le mien.

+1 - ce genre de chose est ce qui a rendu le moment si génial

+1 (& bump), j'aimerais aussi que cela se produise

+1 - Je cherche ça maintenant.

:+1:

??

+1

+99999999999999

+1 s'il vous plait

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

Source : https://stackoverflow.com/questions/3177836/how-to-format-time-since-xxx-eg-4-minutes-ago-similar-to-stack-exchange-site

+1 nous en avons besoin

@dlindahl Merci beaucoup pour cette solution géniale. Maintenant, je sais comment gérer les changements locaux pour les formats de date

J'ai fait ceci pour l'anglais et l'allemand :

  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 ayant une 2e fonction ; Je veux que les deux formes courtes et longues soient disponibles.
Je suggérerais 'mo' pour mois(s) en anglais

ma solution pour ajouter un format par exemple un jour ou un an ou quelque chose de format, j'ai fait comme ceci :

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

  }

retourner par exemple 1j, 3a, 1m

Salutations

Cette page vous a été utile?
0 / 5 - 0 notes