当前位置:首页 > 服务端 > java格式化时间到微秒

java格式化时间到微秒

2022年11月09日 10:08:02服务端6

TL;博士

LocalDateTime.parse( // With resolution of nanoseconds, represent the idea of a date and time somewhere, unspecified. Does *not* represent a moment, is *not* a point on the timeline. To determine an actual moment, place this date+time into context of a time zone (apply a `ZoneId` to get a `ZonedDateTime`).

"2015-05-09 00:10:23.999750900" // A `String` nearly in standard ISO 8601 format.

.replace( " " , "T" ) // Replace SPACE in middle with `T` to comply with ISO 8601 standard format.

) // Returns a `LocalDateTime` object.

不,你不能使用SimpleDateFormat来处理nanoseconds.

但你的前提是……

Java does not support time granularity above 07001 in its date patterns

…从Java 8,9,10及更高版本开始,内置java.time类不再是真的.并不像Java 6和Java 7那样真实,因为大多数java.time functionality is back-ported.

java.time

SimpleDateFormat和相关的java.util.Date/.Calendar类现在已经过时了Java 8(Tutorial)中的新java.time软件包.

新的java.time类支持nanosecond分辨率.该支持包括解析和生成九位数的小数秒.例如,当您使用java.time.format DateTimeFormatter API时,S模式字母表示“秒的一小部分”而不是“毫秒”,它可以处理纳秒值.

瞬间

例如,Instant类表示UTC中的一个时刻.其toString方法使用标准ISO 8601格式生成String对象.最后的Z表示UTC,发音为“Zulu”.

instant.toString() // Generate a `String` representing this moment, using standard ISO 8601 format.

2013-08-20T12:34:56.123456789Z

请注意,捕获Java 8中的当前时刻仅限于毫秒级分辨率. java.time类可以保存以纳秒为单位的值,但只能以毫秒为单位确定当前时间.这种限制是由于Clock的实现.在Java 9及更高版本中,新的Clock实现可以以更精细的分辨率获取当前时刻,具体取决于主机硬件和操作系统的限制,根据我的经验,通常为microseconds.

Instant instant = Instant.now() ; // Capture the current moment. May be in milliseconds or microseconds rather than the maximum resolution of nanoseconds.

LocalDateTime

您的示例输入字符串2015-05-09 00:10:23.999750900缺少时区指示符或UTC的偏移量.这意味着它不代表片刻,不是时间轴上的一个点.相反,它代表了全球约26-27小时范围内的潜在时刻.

将此类输入视为LocalDateTime对象.首先,用T替换中间的SPACE以符合ISO 8601格式,在解析/生成字符串时默认使用.因此无需指定格式化模式.

LocalDateTime ldt =

LocalDateTime.parse(

"2015-05-09 00:10:23.999750900".replace( " " , "T" ) // Replace SPACE in middle with `T` to comply with ISO 8601 standard format.

)

;

的java.sql.Timestamp

java.sql.Timestamp类也处理纳秒分辨率,但是处于一种尴尬的方式.通常最好在java.time类中完成你的工作.从JDBC 4.2及更高版本开始,无需再次使用Timestamp.

myPreparedStatement.setObject( … , instant ) ;

并检索.

Instant instant = myResultSet.getObject( … , Instant.class ) ;

OffsetDateTime

JDBC规范并未强制支持Instant,但OffsetDateTime是.因此,如果上述代码因JDBC驱动程序而失败,请使用以下代码.

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;

myPreparedStatement.setObject( … , odt ) ;

并检索.

Instant instant = myResultSet.getObject( … , OffsetDateTime.class ).toInstant() ;

如果使用较早的4.2之前的JDBC驱动程序,则可以使用toInstant和from方法在java.sql.Timestamp和java.time之间来回切换.这些新的转换方法已添加到旧的遗留类中.

4NSDx.png

关于java.time

要了解更多信息,请参阅Oracle Tutorial.并搜索Stack Overflow以获取许多示例和说明.规格是JSR 310.

您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC driver.不需要字符串,不需要java.sql.*类.

从哪里获取java.time类?

>内置.

>部分标准Java API,带有捆绑实现.

> Java 9增加了一些小功能和修复.

>大部分java.time功能都被反向移植到Java 6& 7月在ThreeTen-Backport.

>更新版本的Android捆绑java.time类的实现.

>对于早期的Android(< 26),ThreeTenABP项目适应ThreeTen-Backport(如上所述).见How to use ThreeTenABP….

ThreeTen-Extra项目使用其他类扩展了java.time.该项目是未来可能添加到java.time的试验场.您可以在这里找到一些有用的类,例如Interval,YearWeek,YearQuarter和more.

作者:大威天龙ASURA
来源链接:https://blog.csdn.net/weixin_29796279/article/details/114247510

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68697.html

分享给朋友:

“java格式化时间到微秒” 的相关文章

吐血整理 《计算机网络 五层协议之物理层(上)》

吐血整理 《计算机网络 五层协议之物理层(上)》

物理层(中篇) 物理层(下篇) 物理层(上篇) 1.物理层的主要功能以及特性 1.1物理层的主要功能 1.2物理层的主要特性...

划分子网和构造超网的学习

1.划分子网 标准的划分方法的缺点: IP 地址空间的利用率有时很低。 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。 两级的 IP 地址不够灵活 最终提出解决的办法:划分子网,两级地址变...

[C#]设置RichTextBox的字体格式:粗体、斜体、下划线 【转】

    做一个文本编辑控件,设置字体的格式等功能必不可少。 RichTextBox作为.Net提供的富文本控件,成为很多人做文本编辑器的首选。本文将要讨论就是针对RichTextBox控件的设置粗体、斜 体、下划线等功能的相关问题。  &n...

[C++]VC自定义发IP包例子

/************************************ *自定义发IP包例子(TCP/IP包发送) *给目标主机的端口发送一个 syn请求, *注意目标主机的信息会发给发送IP地址的主机 *这说明TCP/IP协议本身有IP期骗的漏洞 *这种方运可以自己写成...

根据一学期的学习,谈谈你对软件工程学科的认识。

根据一学期的学习,谈谈你对软件工程学科的认识。 这一题每个人都有不同的理解,而对于我目前了解到的就是: 所谓软件工程就是和建造房子一样的图纸,为开发软件提供一种策略,方法,可以设计出更加实用的软件,通过软件工程的学习,我们得到一种策略,来沟通软件过...

Java 日志框架详解

Java 日志框架详解

1. JUL学习 JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框 架使用方便,学习简单,能够在小型应用中灵活使用。 1.1 架构介绍 Loggers...

Java日志框架那些事儿

Java日志框架那些事儿

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J...

Python  一网打尽<排序算法>之堆排序算法中的树

Python 一网打尽<排序算法>之堆排序算法中的树

本文从树数据结构说到二叉堆数据结构,再使用二叉堆的有序性对无序数列排序。 1. 树 树是最基本的数据结构,可以用树映射现实世界中一对多的群体关系。如公司的组织结构、网页中标签之间的关系、操作系统中文件与目录结构……都可以用树结构描述。 树是由结点以及结点之间的关系所构...

Python 一网打尽<排序算法>之从希尔排序算法的分治哲学开始

Python 一网打尽<排序算法>之从希尔排序算法的分治哲学开始

1. 前言 本文将介绍希尔排序、归并排序、基数排序(桶排序)。 在所有的排序算法中,冒泡、插入、选择属于相类似的排序算法,这类算法的共同点:通过不停地比较,再使用交换逻辑重新确定数据的位置。 希尔、归并、快速排序算法也可归为同一类,它们的共同点都是建立在分治思想之上。...

视图的概念以及使用视图的好处

**视图(**View)是由Select查询语句定义的一个逻辑表,只有定义而无数据,是一个“虚表”。视图是查看和操作表中数据的一种方法。 视图是一个“存储的查询”,“虚拟的表”,创建视图时,并不将实际数据复制到任何地方,无需在表空间中为视图分配存储...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。