我使用的是NEAR协议的公共Postgres数据库:https://github.com/near/near-indexer-for-explorer#shared-public-access
有一个名为included_in_block_timestamp
的字段,它的“数据类型”=“数字”,“长度/精度”= 20。
以下代码有效:
to_char(TO_TIMESTAMP("public"."receipts"."included_in_block_timestamp"/1000000000), 'YYYY-MM-DD HH:mm') as moment,
这也是如此:
function convertTimestampDecimalToDayjsMoment(timestampDecimal: Decimal) {
const timestampNum = Number(timestampDecimal) / 1_000_000_000; // Why is this necessary?
console.log({ timestampNum });
const moment = dayjs.unix(timestampNum); // https://day.js.org/docs/en/parse/unix-timestamp
return moment;
}
例如,有时included_in_block_timestamp
= 1644261932960444221。
我从来没有见过需要除以10亿的时间戳,刚刚弄明白这一点是一个反复试验的问题。
这是怎么回事?这是常规做法吗?这种精确度有意义吗?
1条答案
按热度按时间7d7tgy0s1#
时间戳测量单位(纳秒)似乎在方案级别确定,如以下文档中所示:https://docs.near.org/develop/contracts/environment/#environment-variables
这里是:https://nomicon.io/RuntimeSpec/Components/BindingsSpec/ContextAPI
因此,是的,在进行日期-时间转换之前一定要考虑到这一点。