有没有办法在java中使用LocalDateTime显示高达微秒的精度?就像我们在SimpleDateFormat中使用的那样:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:S");
同样,如果我想这样显示我应该怎么做:hours:minutes:seconds:milliseconds:microseconds
我读过它可以使用LocalDateTime完成。但是如何?
答案 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格式。在解析/生成其日期时间值的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 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date
,.Calendar
和&amp; java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance 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的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
等。