Moment: Einzelbuchstaben fromNow()-Format

Erstellt am 29. Nov. 2015  ·  21Kommentare  ·  Quelle: moment/moment

Es wurde versucht, das Format mit moment().fromNow(); mit einem Buchstaben zu beschreiben

Beispiel: im Gegensatz zu 1 hour , 1 day , 1 week . Suchen Sie nach 1h , 1d , 1w .

Ist es eine Einstellung, die mir fehlt, um ein solches Einzelbuchstabenformat zu verwenden?

Hilfreichster Kommentar

Sie können dies über das Gebietsschema einstellen:

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

Alle 21 Kommentare

Ich glaube nicht, dass Moment diese Funktion im Moment hat.
Weitere Informationen finden Sie unter

Tatsächlich können Sie dafür eine eigene Funktion schreiben, also sind Sie sich nicht sicher, ob der Moment dies wirklich unterstützen muss.
Eine interessante Frage ist, ob Moment diese Funktion unterstützt, was ist dann die Kurzbezeichnung für "ein paar Sekunden"?

Es wäre ein "s" (Beispiel: 5s, 35s), aber die Anzahl der Sekunden. Umgang mit kleinen Immobilienmengen in einem Projekt.

Sie können dies über das Gebietsschema einstellen:

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

Ja, die Ländereinstellung ist der empfohlene Ansatz.

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

Ich würde wirklich gerne sehen, dass diese Funktion in der Kerncodebasis implementiert wird. Diese kurzen Abkürzungen im Instagram-Stil sind heutzutage ziemlich allgegenwärtig.

Ja, ich stimme zu, es ist ziemlich einfach, für eine Sprache anzupassen. Aber... wenn Ihre App mehrere Gebietsschemas unterstützen muss, müssen Sie sie plötzlich in allen unterstützten Sprachen anpassen. Es wäre wirklich schön, wenn die Macht der Community von Moment diese Last auf sich nehmen würde.

Davon profitieren nicht nur Apps, die mehrere Locales unterstützen müssen, sondern auch Apps, die sowohl das Kurz- als auch das Langformat in verschiedenen Teilen anzeigen müssen. Im Moment muss ich einen Workaround in meinem verwenden.

+1 - diese Art von Sache hat den Moment so großartig gemacht

+1 (& Bump), würde das auch gerne sehen

+1 - Suche gerade danach.

:+1:

👍

+1

+999999999999999

+1 bitte

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

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

+1 wir brauchen es

@dlindahl Vielen Dank für die tolle Lösung. Jetzt weiß ich, wie ich mit lokalen Änderungen für Datumsformate umgehe

Ich habe das für Englisch und Deutsch gemacht:

  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 mit einer 2. Funktion; Ich möchte, dass beide Kurz- und Langformen verfügbar sind.
Ich würde 'mo' für Monat(e) auf Englisch vorschlagen

Meine Lösung, um ein Format hinzuzufügen, zum Beispiel einen Tag oder ein Jahr oder etwas Format, habe ich so gemacht:

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

  }

Rückgabe zum Beispiel 1d, 3y, 1m

Grüße

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen