Moment: Formato de letra única de Agora ()

Criado em 29 nov. 2015  ·  21Comentários  ·  Fonte: moment/moment

Tentando usar uma letra para descrever o formato com moment().fromNow();

Exemplo: oposto a 1 hour , 1 day , 1 week . Procurando ter 1h , 1d , 1w .

É uma configuração que estou perdendo para usar o formato de uma única letra assim?

Comentários muito úteis

Você pode definir isso via local:

  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 comentários

Não acho que o Momento tenha esse recurso agora.
Você pode consultar http://momentjs.com/docs/#/displaying/fromnow/

Na verdade, você pode escrever sua própria função para fazer isso, então não tenho certeza se o momento realmente precisa de suporte.
Uma questão interessante é se o momento oferece suporte a esse recurso, então qual é o nome curto para "alguns segundos"?

Seria um "s" (exemplo: 5s, 35s) mas, tem a quantidade de segundos. Lidar com pequena quantidade de imóveis em um projeto.

Você pode definir isso via local:

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

Sim, a configuração de local é a abordagem recomendada.

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

Eu realmente adoraria ver esse recurso sendo implementado na base de código principal. Essas abreviações curtas no estilo instagram são bastante onipresentes hoje em dia.

Sim, concordo, é muito fácil personalizar para um idioma. Mas ... se seu aplicativo precisa oferecer suporte a vários locais, de repente você precisa lidar com a personalização em todos os idiomas que você oferece suporte. Seria muito bom ter o poder da comunidade do momento assumindo esse fardo.

Não apenas os aplicativos que precisam oferecer suporte a vários locais, mas os aplicativos que precisam exibir o formato curto e longo em diferentes partes também se beneficiam disso. Agora, eu tenho que usar uma solução alternativa no meu.

+1 - esse tipo de coisa é o que torna o momento tão bom

+1 (& bump), também adoraria ver isso acontecendo

+1 - Procurando por isso agora.

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

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

+1 nós precisamos disso

@dlindahl Muito obrigado pela solução incrível. Agora eu sei como lidar com mudanças locais para formatos de data

Fiz isso para inglês e alemão:

  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 com 2ª função; Quero ambos os formulários curto + longo disponíveis.
Eu sugiro 'mo' para mês (es) em inglês

minha solução para adicionar um formato por exemplo um dia ou um ano ou algo assim, eu fiz assim:

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

  }

retorne por exemplo 1d, 3y, 1m

Cumprimentos

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

paulyoung picture paulyoung  ·  3Comentários

Shoroh picture Shoroh  ·  3Comentários

nikocraft picture nikocraft  ·  3Comentários

tanepiper picture tanepiper  ·  3Comentários

vbullinger picture vbullinger  ·  3Comentários