Moment: Now() ํ˜•์‹์˜ ๋‹จ์ผ ๋ฌธ์ž

์— ๋งŒ๋“  2015๋…„ 11์›” 29์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: moment/moment

moment().fromNow(); ํ˜•์‹์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ: 1 hour , 1 day , 1 week ๋ฐ˜๋Œ€. 1h , 1d , 1w ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹จ์ผ ๋ฌธ์ž ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ๋†“์นœ ์„ค์ •์ž…๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋กœ์ผ€์ผ์„ ํ†ตํ•ด ์ด๊ฒƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  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๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค๋ฉด "๋ช‡ ์ดˆ"์— ๋Œ€ํ•œ ์งง์€ ๋ ˆ์ด๋ธ”์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

"s"(์˜ˆ: 5์ดˆ, 35์ดˆ)์ด์ง€๋งŒ ์ดˆ ๋‹จ์œ„๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ์†Œ๋Ÿ‰์˜ ๋ถ€๋™์‚ฐ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋กœ์ผ€์ผ์„ ํ†ตํ•ด ์ด๊ฒƒ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  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

+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://stackoverflow.com/questions/3177836/how-to-format-time-since-xxx-eg-4-minutes-ago-similar-to-stack-exchange-site

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

๋‘ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” +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 ๋“ฑ๊ธ‰