일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스마트 컨트렉트 함수이름 중복
- ethers websocket
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트컨트렉트테스트
- ethers typescript
- Vue
- 티스토리챌린지
- 체인의정석
- nest.js설명
- chainlink 설명
- git rebase
- 러스트 기초
- ambiguous function description
- SBT표준
- 러스트 기초 학습
- multicall
- 러스트기초
- vue기초
- 스마트컨트렉트 함수이름 중복 호출
- rust 기초
- ethers v6
- 프록시배포구조
- 컨트렉트 동일한 함수이름 호출
- ethers
- 머신러닝기초
- 컨트렉트 배포 자동화
- Vue.js
- ethers type
- 스마트컨트렉트프록시
- 오블완
Archives
- Today
- Total
체인의정석
node.js) UTC 시간 기준으로 날짜를 저장하는 방법, blocktimestamp로 부터 UTC시간 도출하는 방법 본문
개발/backend
node.js) UTC 시간 기준으로 날짜를 저장하는 방법, blocktimestamp로 부터 UTC시간 도출하는 방법
체인의정석 2024. 11. 21. 12:13728x90
반응형
만약 mysql 데이터베이스에 시간을 UTC기준으로 시간을 넣거나, 블록체인의 blocktimestamp를 통해서 UTC시간을 뽑아내고 db에 넣고 싶을때는 아래 코드를 사용하면 된다.
function getCurrentUTCDate() {
const date = new Date();
return formatUTCDateToCustom(date);
}
function getNextUTCDate() {
const date = new Date();
date.setUTCDate(date.getUTCDate() + 1);
return formatUTCDateToCustom(date);
}
function formatUTCDateToCustom(date) {
const pad = (num) => String(num).padStart(2, '0');
const year = date.getUTCFullYear();
const month = pad(date.getUTCMonth() + 1); // getUTCMonth is zero-based
const day = pad(date.getUTCDate());
const hours = pad(date.getUTCHours());
const minutes = pad(date.getUTCMinutes());
const seconds = pad(date.getUTCSeconds());
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
function blockTimestampToUTCDate(blockTimestamp) {
const date = new Date(blockTimestamp * 1000);
const datetime = formatUTCDateToCustom(date);
return datetime;
}
function blockTimestampToNextUTCDate(blockTimestamp) {
const date = new Date(blockTimestamp * 1000);
date.setUTCDate(date.getUTCDate() + 1);
const datetime = formatUTCDateToCustom(date);
return datetime;
}
module.exports = {getCurrentUTCDate, getNextUTCDate, formatUTCDateToCustom, blockTimestampToUTCDate, blockTimestampToNextUTCDate};
여기서 만약 하루 뒤의 시간을 유효기간으로 두고 넣으려면
function getNextUTCDate() {
const date = new Date();
date.setUTCDate(date.getUTCDate() + 1);
return formatUTCDateToCustom(date);
}
한시간 뒤의 시간을 넣으려면
function getNextUTCDate() {
const date = new Date();
date.setUTCHours(date.getUTCHours() + 1);
return formatUTCDateToCustom(date);
}
이런식으로 넣어주면 된다.
블록체인에서의 blockTimestamp의 경우 1000을 곱한 후에 시간으로 바꾸어주면 된다.
이때 UTCDate 포멧으로 바꾸기 위해서 별도의 작업이 필요하기 때문에 위와같이 코드를 사용해야 한다.
만약 blocknumber로 체크를한다? 그럼 정확한 시간을 맞출수는 없지만 블록생성속도를 초단위로 계산해서 넣어주면 대략적으로 일치한다. (초단위 정도의 오차 발생 가능) 따라서 blocktimestamp로 쓸지 number로 쓸지를 정해야 한다.
728x90
반응형
'개발 > backend' 카테고리의 다른 글
node.js에서 VRF 만들기 (node-ecvrf, drand-client 사용) (0) | 2024.11.29 |
---|---|
node.js) mysql2를 사용하여 db query, insert 하는 코드 (0) | 2024.11.21 |
node.js) dotenv를 이용한 환경변수 분리 및 winston을 이용한 logger 만들기 (0) | 2024.11.21 |
winston으로 백엔드 로그 관리하기 (1) | 2024.09.04 |
주기적으로 재시작 하는 node.js 프로그램 만들기 (pm2 ecosystem, crone) (1) | 2024.07.05 |
Comments