티스토리 뷰

우테캠

개발시 필요한 함수들

안양사람 2021. 7. 24. 12:56
728x90
SMALL

2번째 프로젝트 때 사용한 함수들

 

시간 parse 함수

db에서 시간을 불러와 몇분전, 몇시간전 이런 함수를 만들었다. 처음에 내가 짰는데 뭐가 틀린지 모르겠지만 틀려서 우리 팀원이 내 코드를 보고 그냥 처음부터 다시 짰다. 더 좋은 방법이 있으면 댓글 달아주세요

const secObj = {
  year: 31536000,
  month: 2592000,
  date: 86400,
  hour: 3600,
  min: 60,
};
const getTimeObject = (date) => ({
  year: date.getFullYear(),
  month: date.getMonth() + 1,
  date: date.getDate(),
  hour: date.getHours(),
  min: date.getMinutes(),
  sec: date.getSeconds(),
  time: date.getTime(),
});
const parseTime = (time) => {
  const dbTime = getTimeObject(new Date(time));
  const nowTime = getTimeObject(new Date());
  const diff = (nowTime.time - dbTime.time) / 1000;
  let gap = diff;
  let suffix = '';
  if (diff < secObj.min) {
    suffix = '초 전';
  } else if (diff < secObj.hour) {
    gap /= secObj.min;
    suffix = '분 전';
  } else if (diff < secObj.date) {
    gap /= secObj.hour;
    suffix = '시간 전';
  } else if (diff < secObj.month) {
    gap /= secObj.date;
    suffix = '일 전';
  } else if (diff < secObj.year) {
    gap /= secObj.month;
    suffix = '달 전';
  } else {
    gap /= secObj.year;
    suffix = '년 전';
  }
  gap = Math.floor(gap);
  return gap + suffix;
};
export { parseTime };

 

가격 parse 함수

tolocalestring으로 나라에 맞는 쉼표를 만들어 준다. 예를들면 10,000 이런식!!

가격이 null이라던가 뭐 음.. db에서 어떻게 주냐에 따라 다른데 대충 저런식으로 파싱해서 사용하면 된다.

const parsePrice = (price) =>
  typeof price === 'number' ? price.toLocaleString('ko-KR') + '원' : '가격미정';

export { parsePrice };

 

이거는 인풋창 가격 validation 함수이다.

typeof number로 변환하는 이유는 일단 그냥 입력을 하게되면 string으로 들어오지만 db에서 가져오면 number로 가져온다. 그리고 number에는 replace메서드가 없기 때문에 string으로 변환해주는 것이다.

 const priceValidation = (value) => {
    if (typeof value === 'number') value = value + '';
    value = value.replace(/[^0-9]/g, '');
    value = value.slice(0, 9);
    if (value.length > 0)
      value = '₩ ' + parseInt(value).toLocaleString('ko-KR');
    return value;
  };

 

 

 

728x90
LIST

'우테캠' 카테고리의 다른 글

우아한테크캠프 5주차 후기  (0) 2021.08.07
우아한테크캠프 4주차 후기  (0) 2021.07.31
우아한테크캠프 3주차 후기  (0) 2021.07.24
우아한테크캠프 2주차 후기  (0) 2021.07.17
1주차 정규식 유효성 검사  (0) 2021.07.10
댓글
공지사항