티스토리 뷰
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 |
댓글
공지사항