본문 바로가기

개발

id generator 개발하기 - 2 (타임스탬프)

반응형

snowflake id에서 첫번째 필드는 보통 그냥 공란으로 둬서 마찬가지로 스킵하겠습니다.(저는 그냥 1로 세팅하겠습니다, 대충 양수임)

다음으로 타임 스탬프 필드에 찍을 스탬프를 제작해보겠습니다.

 

시작에 앞서 간단하게 제작 과정을 요약하겠습니다.

1. 먼저 베이스가 필요합니다.

2. 다음으로 표기할 현재 시간이 필요합니다.

3. 각각의 DateTime을 Milliseconds로 변환해줄 변환기가 필요합니다.

 

본격적으로 베이스를 만들어 보겠습니다.

LocalDateTime SDTOfAlphabet = LocalDateTime.of(1995, 10, 5, 12, 0, 0);

위처럼 DateTime형식으로 베이스가 될 시점을 하나 만들어 줍니다.(저는 제 생일로 베이스를 정했습니다)

 

다음으로 아래처럼 표기할 시점을 하나 잡아줍니다.

LocalDateTime cur = LocalDateTime.now();

 

이제 각각의 시점을 아래와 같이 Milliseconds로 변환해 줍니다

LocalTime originTime = SDTOfAlphabet.toLocalTime();
LocalDate originDate = SDTOfAlphabet.toLocalDate();
lenghtOfStart += originDate.toEpochDay()*24*60*60*1000;
lenghtOfStart += ToMilliseconds(originTime);

날짜는 기준일로 부터 몇일이 흘렀는지를 카운팅하여 변환해주고, 시각은 그냥 따로 메소드를 구현해서 변환해주면 됩니다.

 

이렇게 구한 길이들을 적절하게 계산해주면 베이스로부터 기간의 길이를 Milliseconds단위로 구할 수 있습니다.

 

다음에는 이렇게 구한 값으로 snowflak id를 채워보겠습니다.

반응형

'개발' 카테고리의 다른 글

하이버네이트 커스텀 벨류 타입 - 1  (0) 2022.02.16
더 자바, 코드 조작  (0) 2021.11.22
id generator 개발하기 - 1 (개요)  (0) 2021.09.22
알파벳 위키 기능 - 1  (0) 2021.08.13
알파벳 로그인 기능 개발기  (0) 2021.07.07