일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스마트컨트렉트 함수이름 중복 호출
- chainlink 설명
- erc4337 contract
- Vue.js
- ambiguous function description
- ethers typescript
- 체인의정석
- Vue
- 러스트 기초
- ethers v6
- 오블완
- 컨트렉트 배포 자동화
- 머신러닝기초
- 티스토리챌린지
- 러스트기초
- SBT표준
- git rebase
- ethers type
- 계정추상화
- erc4337
- 스마트컨트렉트테스트
- 컨트렉트 동일한 함수이름 호출
- ethers
- rust 기초
- vue기초
- ethers websocket
- 스마트컨트렉트 예약어 함수이름 중복
- 러스트 기초 학습
- multicall
- 스마트 컨트렉트 함수이름 중복
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