해결하고 싶은 문제

❓ String Type의 시간을 Long Dto에 넣는 방법

벨보이 2022. 1. 7. 11:00

🚪 String Type을 Long Type에 넣을 수 없다

날짜 포멧은 무조건 YYYY-MM-DD hh:mm:ss로 나와야한다 String Type

날짜를 생성하는 방법 2가지

1. FE moment.format() (String)

2.BE new Date() + SimpleDateFormat (String)

 

String을 Long에다가 넣는것은 불가능

🗝 시도 1

TimeStamp를 이용해서 Long으로 저장해서 Service 단에서 String으로 변환하는 작업 수행

 

BE 단에서 처리하기 보다 FE 단에서 처리해야 간편할거 같다

💡  시도2 해결

FE에서 TimeStamp를 이용해서 BE로 넘길때 Long으로 반환 DTO Entitiy를 넘어가서 Date로 저장

다시 DTO로  Long으로 반환

FE에서 TimeStamp 및 date처리 방식을 통해 원하는 포멧 출력

/** TimeStamp UINX 방식으로 초단위까지 Long 생성 */
const datetime = Math.floor(new Date().getTime() / 1000.0),

// Long을 Date 타입으로 변환
timeStampFormat = (date) => {
        return this.getFormatDate(new Date(date * 1000));
}
 
// Date을 원하는 포멧으로 변환 'YYYY-MM-DD hh:mm:ss'
getFormatDate = (date) => {
    let month = date.getMonth() + 1;
    let day = date.getDate();
    let hour = date.getHours();
    let minute = date.getMinutes();
    let second = date.getSeconds();
    month = month >= 10 ? month : `0${month}`;
    day = day >= 10 ? day : `0${day}`;
    hour = hour >= 10 ? hour : `0${hour}`;
    minute = minute >= 10 ? minute : `0${minute}`;
    second = second >= 10 ? second : `0${second}`;

    return `${date.getFullYear()}-${month}-${day} ${hour}:${minute}:${second}`;
}

const useDatetime = this.timeStampFormat(datatime);

 

 

💪 출처 및 도움주신분들

 

getFormatDate를 참고했는데 블로그를 까먹음..