首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Instant.getEpochSecond对Instant.toEpochMilli的理论基础

Instant.getEpochSecond对Instant.toEpochMilli的理论基础
EN

Stack Overflow用户
提问于 2014-08-21 13:12:54
回答 3查看 3.3K关注 0票数 16

有人能解释一下Instant.getEpochSecondInstant.toEpochMilli命名背后的理由吗?我能想到的唯一原因是瞬间的内部表示为相对于时代的秒和相对于该秒的纳米秒,而毫秒则是根据这两个值计算的。

但是,为什么要让这样的实现细节泄漏到新的API中呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-21 13:20:42

我不得不猜测,但我同意你的看法:

  • getEpochSecond()仅表示一个getter,即它只返回存储在该实例中的值。
  • 另一方面,toEpochMilli()会计算它的返回值,就像toString()不会返回存储的字符串,但是每次调用该方法时都会在动态中进行内置。

这个约定实际上是在这里记录的:http://docs.oracle.com/javase/tutorial/datetime/overview/naming.html

此约定的原因可能与JavaBeans规范有关,即epochSecondInstant的(只读)属性,而epochMilli是不同的表示,而不是属性。

票数 13
EN

Stack Overflow用户

发布于 2014-08-21 13:25:35

getters返回Temporal对象的部分内容(如Instant),而to*方法返回该对象的转换版本:

  • getEpochSecond()返回从1970-01-01T00:00:00Z的Java时代获得的秒数。
  • getNanos()返回Instant的纳秒秒部分。
  • toEpochMilli()返回转换为毫秒的Instant (即seconds * 1000 + nanoseconds / 1,000,000)
票数 4
EN

Stack Overflow用户

发布于 2014-08-21 13:22:47

方便吗?EpochSeconds用于UNIX兼容性,EpochMilli用于java兼容性,从我的头顶开始。

编辑:哦,我甚至不明白这个问题,这就是为什么一个是"get“,另一个是" to ":也许是为了提醒你第二个转换,可能会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25427255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档