首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当ms中的时间以零结束时,JAVA新时间戳()使结束零消失

当ms中的时间以零结束时,JAVA新时间戳()使结束零消失
EN

Stack Overflow用户
提问于 2017-04-05 09:43:10
回答 1查看 333关注 0票数 1

在我使用的日志中:(java.sql.Timestamp)

代码语言:javascript
复制
 new Timestamp(System.currentTimeMillis())

它的行为很奇怪(国际水文学组织):

  • 当System.currentTimeMillis() = 1490713735960时 返回:2017-03-28 17:08:55.96

我预计: 2017-03-28 17:08:55.96的结尾是0

  • 当System.currentTimeMillis() = 1490713724721时 返回时间: 2017-03-28 17:08:44.721

如预期

问题:

这是新时间戳()的正常行为吗?

为什么终止零点会被丢弃?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 09:52:49

所以,是的,这是正确的行为。因为纳秒部分的toString()方法的实现是:

代码语言:javascript
复制
if (nanos == 0) {
    nanosString = "0";
} else {
    nanosString = Integer.toString(nanos);
    ...
}

else部分:

代码语言:javascript
复制
// Truncate trailing zeros
char[] nanosChar = new char[nanosString.length()];
nanosString.getChars(0, nanosString.length(), nanosChar, 0);
int truncIndex = 8;
while (nanosChar[truncIndex] == '0') {
    truncIndex--;
}

nanosString = new String(nanosChar, 0, truncIndex + 1);

查看java.sql.Timestamp.toString()方法的源代码

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

https://stackoverflow.com/questions/43227495

复制
相关文章

相似问题

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