为了账号安全,请及时绑定邮箱和手机立即绑定

识别给定的时间戳

识别给定的时间戳

达令说 2021-10-14 14:22:17
转换时间为:2016/06/21 02:14:33 未转换时间戳:2346273未转换的时间戳由 API 响应返回,但无法理解使用哪种时间戳转换来获取 2016/06/21 02:14:33 人类可读格式。
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

从你的评论:


LISK Coin 的 API 正在返回这些值。


这有帮助。虽然在 LISK 的文档中并不清楚,但在 Reddit 的 LISK 论坛上进行了一些搜索,发现了这篇文章,其中说:


应用链中的时间戳是应用链创世块创建以来的秒数。Lisk 创世区块创建于 2016 年 5 月 24 日。


然后它继续显示精确的创世日期2016-05-24T17:00:00.000Z (UTC)。


因此,我们可以这样做:


var dt = new Date("2016-05-24T17:00:00.000Z");  // start with the LISK genesis date

dt.setTime(dt.getTime() + (2346273 * 1000));    // add your timestamp * 1000 (seconds to ms)

您现在有一个Date正确表示该时间点的对象。如果您调用.toString()它,它将使用计算机的本地时区来生成输出字符串。


对我来说,在美国太平洋时区:


dt.toString()

// "Mon Jun 20 2016 13:44:33 GMT-0700 (Pacific Daylight Time)"

如果我将时区更改为印度,那么我将获得您提供的日期和时间:


dt.toString()

// "Tue Jun 21 2016 02:14:33 GMT+0530 (India Standard Time)"

通过直接提供印度的区域设置代码和时区 ID,我还可以在不更改系统时区的情况下以更紧凑的格式获得此信息:


dt.toLocaleString('en-IN', {timeZone: 'Asia/Kolkata'})

// "21/6/2016, 2:14:33 am"

或者,如果您想要 ISO 8601 格式的确切 UTC 时间戳,则


dt.toISOString()

// "2016-06-20T20:44:33.000Z"

另一件需要注意的事情 - 您链接到的文档中没有提到这个创世时间戳。在那些文档中,它说这个值是一个常规的 Unix 时间戳。Unix 时间戳基于1970-01-01T00:00:00.000Z,而不是基于2016-05-24T17:00:00.000Z。因此,要么他们的文档是错误的,要么他们指的是比您使用的文档更新的内容。


查看完整回答
反对 回复 2021-10-14
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信