在我的日志中,我使用的是:(java.sql.Timestamp)
new Timestamp(System.currentTimeMillis())
它的行为很奇怪(恕我直言):
当System.currentTimeMillis()= 1490713735960
它返回:2017-03-28 17:08:55.96
我预计会有:2017-03-28 17:08:55.960结尾为0
当System.currentTimeMillis()= 1490713724721
它返回:2017-03-28 17:08:44.721
符合预期
问题:
这是new Timestamp()的正常行为吗?
为什么终止的零被丢弃?
最佳答案
因此,是的,这是正确的行为。因为纳秒部分的toString()
方法的实现是:
if (nanos == 0) {
nanosString = "0";
} else {
nanosString = Integer.toString(nanos);
...
}
在
else
部分:// 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()
方法的源代码