首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何打印秒值的6位精度的时间?

如何打印秒值的6位精度的时间?
EN

Stack Overflow用户
提问于 2012-04-09 13:20:29
回答 3查看 35.1K关注 0票数 15

我在列中有一个值,它的类型是时间戳。假设我有一个值2007-05-04 08:48:40.969774

现在,当尝试从数据库中获取值并将这个时间戳值返回给函数时,我应该使用什么SimpleDateFormatter模式,以便返回秒旁边的分数部分。

我使用了yyyy:mm:ss,但它只返回到秒,忽略了秒旁边的分数(.969774)。我需要帮助,在返回这个分数部分,与6位精度。

EN

回答 3

Stack Overflow用户

发布于 2012-04-09 13:24:41

格式化java.util.Date (或java.sql.Timestamp)的默认方法只有毫秒精度。您可以使用yyyy-MM-dd hh:mm:ss.SSS获得毫秒精度。

一个java.sql.Timestamp实际上具有纳秒精度(假设数据库服务器和驱动程序实际上支持它)。在Java8中格式化它的最简单方法是将时间戳转换为java.time.LocalDateTime (使用Timestamp.toLocalDateTime()),并在java.time.format.DateTimeFormatter中使用支持纳秒的java.time格式设置选项。

如果您使用Java 7或更早版本,它将需要一些额外的努力,因为通常的日期格式化程序不支持它。例如,您可以使用模式yyyy-MM-dd hh:mm:ss的日期格式化程序(只格式化到秒),并自己追加Timestamp.getNanos()的子秒(带有适当的零填充)。

票数 8
EN

Stack Overflow用户

发布于 2012-04-09 14:04:52

你必须有办法获得一个微秒的时间戳。我结合使用System.currentTimeMillis()和System.nanoTime()。那么你需要一个方法来显示它。您可以将其除以1000,并正常显示毫秒,然后显示时间的最后3位数字。也就是有一段时间

代码语言:javascript
运行
复制
long timeUS = System.currentTimeMillis() * 1000 + micros;

下面是一个更详细的示例

HiresTimer.javaHiresTimerTest.java

测试打印

代码语言:javascript
运行
复制
2012/04/09T14:22:13.656008
2012/04/09T14:22:13.656840
2012/04/09T14:22:13.656958
2012/04/09T14:22:13.657066
 ....
2012/04/09T14:22:13.665249
2012/04/09T14:22:13.665392
2012/04/09T14:22:13.665473
2012/04/09T14:22:13.665581

编辑:相关代码是

代码语言:javascript
运行
复制
private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy/MM/dd'T'HH:mm:ss.SSS");
private static final DecimalFormat DF = new DecimalFormat("000");

public static String toString(long timeUS) {
    return SDF.format(timeUS / 1000) + DF.format(timeUS % 1000);
}
票数 5
EN

Stack Overflow用户

发布于 2015-04-12 21:19:32

在Java8及更高版本中,java.time包支持解析和操作日期/时间以达到纳秒精度。这意味着每秒的分数可以达到9位数。

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

https://stackoverflow.com/questions/10073813

复制
相关文章

相似问题

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