如何显示时间,如小时:分钟:秒:毫秒:微秒?

时间:2016-09-07 23:39:33

标签: java

有没有办法在java中使用LocalDateTime显示高达微秒的精度?就像我们在SimpleDateFormat中使用的那样:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:S");

同样,如果我想这样显示我应该怎么做:hours:minutes:seconds:milliseconds:microseconds 我读过它可以使用LocalDateTime完成。但是如何?

4 个答案:

答案 0 :(得分:0)

看起来java.time.format.DateTimeFormatter可以满足您的需求。请在此处查看javadoc:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

代码看起来与SimpleDateFormat的代码相同,因此相同的格式字符串" HH:mm:ss:S"将继续工作。

答案 1 :(得分:0)

最后我读到,根据这里的文档,java 8可以做纳秒...... https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html - 我听说java 9会对日期和时间功能进行一些重大更新。

答案 2 :(得分:0)

<强> Java7

如果您使用Timestamp对象,则可以使用malloc部分的常规格式,然后附加Date以获取纳秒格式字符串

答案 3 :(得分:0)

ISO 8601

您所需的时间格式是标准ISO 8601格式。在解析/生成其日期时间值的String表示时,java.time类默认使用ISO 8601格式。

纳秒

java.time类支持最高纳秒的分辨率。他们取代的遗留日期时间类限制为毫秒。

LocalTime

LocalTime类表示没有日期且没有时区的时间。

确定当前时间确实需要时区。对于任何特定时刻,时区在全球各地都有所不同。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalTime lt = LocalTime.now( z );

通过调用toString生成字符串。

String output = lt.toString();  // 12:34:56.789

在Java 8中,捕获当前时间限制为毫秒。该类可以保持最多纳秒,但Clock实现具有遗留限制。在Java 9中,新的Clock实现能够在几纳秒内捕获当前时间(取决于主机的硬件功能)。

该问题提及LocalDateTime。该课程适用于日期时间,日期加上时间。但该课程故意缺乏任何时区概念。几乎从来没有你想要的,因为LocalDateTime 代表时间轴上的一个时刻。没有时区的背景说“今年1月15日下午3点”没有任何意义,因为德克萨斯州的下午3点与魁北克蒙特利尔不同,这与奥克兰新西兰不同。指定时区(ZoneId)以确定ZonedDateTime对象中的实际时刻。对于UTC值,只需使用Instant

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date.Calendar和&amp; java.text.SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6&amp; ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuarter等。