조금이라도 의문이 들면 메모해서 남겨놓고 나중에 다시 찾아보면서 보완해나가는중
오류 :
파이어베이스 받아온 튜플의 시간 데이터 표출 오류.
파이어베이스에서 시간 데이터를 사용할때 Timestamp라는 클래스를 사용이 필요했고
호출된 데이터를 컴포넌트에 그릴때, 호출된 데이터의 시간데이터를 그대로 표출하니 오류가 발생했음.
습득한 지식 :
Timestamp라는 클래스는 시간 정보를 표현해줄때 객체 필드값으로 {seconds, nanoseconds}로 다루고 있게 구성 되어있음.
firebase/firestore를 사용하면
JS의 기본 시간 클래스인 Date와 갖다 꼴아박을수있도록
Timestamp.fromData( new Date ) 이런 메서드를 지원함
Timestamp.toDate() 를 사용하면 JS의 Date객체를 반환하는데
Timestamp 에서 Date로 변환되는 과정에서 정밀도가 떨어질 수 있음.
마침 시간 이야기가 나와서 궁금해서 찾아봤는데
firebase의 Timestamp 객체는 UTC를 사용하는데
JS의 Date 는 UTC 를 사용 안하나?
분명히 예전에 JS의 Date때문에 고생했던 것 같은데
찾아보니 UTC 를 사용하지 않는건 아니다.
JS에서 Date를 소개할떄 윤초이야기가 나왔으니 Timestamp에서는 윤초를 관리하는지 찾아보자
Timestamp`은 시간대 또는 캘린더와 무관한 특정 시점을 나타내며, UTC 에포크 시간으로 나노초 단위의 초와 초 단위로 표현됩니다.그레고리력을 1년 역방향으로 확장하는 그레고리력을 사용하여 인코딩됩니다. 인코딩 시 모든 분의 길이가 60초라고 가정합니다. 즉, 윤초는 '스미어(smear)' 처리되므로 해석을 위한 별도의 윤초 테이블이 필요하지 않습니다. 범위는 0001-01-01T00:00:00Z~9999-12-31T23:59:59.999999999Z입니다.예시 및 추가 사양은 [타임스탬프 정의](https://github.com/google/protobuf/blob/master/src/google/protobuf/timestamp.proto)를 참조하세요.
| 내용 출처 https://firebase.google.com/docs/reference/js/firestore_lite?hl=ko |
스미어 처리하여 윤초를 고르게 분산해서 처리한다는것을 알았다.
'프론트엔드 > JavaScript' 카테고리의 다른 글
[JS] fetch 후 응답 데이터 처리 방법 (async, await. promise) (0) | 2025.01.08 |
---|---|
[javascript] 자동 세미콜론 삽입기능으로 인한 오류 (0) | 2024.10.09 |
[javascript] 자바스크립트 코어 부분 좋은 사이트 (0) | 2022.07.25 |
[javascript] 스크립트 function 사용법. (0) | 2022.07.22 |
댓글