Moment: Formato de una sola letra fromNow ()

Creado en 29 nov. 2015  ·  21Comentarios  ·  Fuente: moment/moment

Intentando usar una letra para describir el formato con moment().fromNow();

Ejemplo: opuesto a 1 hour , 1 day , 1 week . Buscando tener 1h , 1d , 1w .

¿Es una configuración que me falta para usar un formato de una sola letra como ese?

Comentario más útil

Puede configurar esto a través de la configuración regional:

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

Todos 21 comentarios

No creo que el momento tenga esta característica en este momento.
Puede consultar http://momentjs.com/docs/#/displaying/fromnow/

En realidad, puede escribir su propia función para hacer esto, por lo que no estoy seguro de si el momento realmente necesita ser compatible.
Una pregunta interesante es si moment admite esta función, ¿cuál es la etiqueta corta para "unos segundos"?

Sería una "s" (ejemplo: 5s, 35s) pero tiene la cantidad de segundos. Tratar con una pequeña cantidad de bienes inmuebles en un proyecto.

Puede configurar esto a través de la configuración regional:

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

Sí, la configuración regional es el enfoque recomendado.

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

Realmente me encantaría ver que esta función se implemente en la base de código central. Estas abreviaturas cortas de estilo Instagram son bastante omnipresentes en estos días.

Sí, estoy de acuerdo, es bastante fácil de personalizar para un idioma. Pero ... si su aplicación necesita admitir múltiples configuraciones regionales, de repente debe manejar la personalización en todos los idiomas que admite. Sería muy bueno que el poder de la comunidad del momento se hiciera cargo de esa carga.

No solo las aplicaciones que deben admitir múltiples configuraciones regionales, sino también las aplicaciones que necesitan mostrar tanto el formato corto como el largo en diferentes partes también se beneficiarían de esto. En este momento, tengo que usar una solución alternativa en la mía.

+1 - este tipo de cosas es lo que hizo que el momento fuera tan grandioso

+1 (& bump), también me encantaría que esto sucediera

+1 - Buscando esto ahora mismo.

: +1:

👍

+1

+99999999999999

+1 por favor

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

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

+1 lo necesitamos

@dlindahl Muchas gracias por esta increíble solución. Ahora sé cómo manejar los cambios locales para los formatos de fecha.

Hice esto para inglés y alemán:

  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 que tiene una segunda función; Quiero que estén disponibles las dos formas, corta y larga.
Sugeriría "mo" por mes (s) en inglés

mi solución para agregar un formato, por ejemplo, un día o un año o algo, me gustó esto:

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

  }

volver, por ejemplo, 1d, 3y, 1m

Saludos

¿Fue útil esta página
0 / 5 - 0 calificaciones