关于java时间类型和格式化到微秒问题
常规的问题此处略,因为网络上到处都是,这里主要讨论三个问题:
1.数据库的时间戳类型(含微秒)对应java的什么类型
java的常见时间类型比较多:
- java.util.Date
- java.sql.Date
- java.sql.Timestamp
- java.util.Calendar
- java.time.LocalDate
- java.time.LocalTime
- java.time.LocalDateTime
- java.time.Instant
除了这些,还有许多不常用的java.time类型,例如Year,Month。
以上列出的类型中,只有红色部分可以精确到微秒。
我们常用的Date,Calendar并不能精确到微秒。
所以为了能够显示数据库中微秒,在使用mybatis的时候,需要把字段类型映射为java.sql.Timestamp。
当然也可以映射为其它类型,例如LocalDateTime,Instant,不过需要自己添加mybatis的typeHandler,以便把类型转为适当的类型。
2.java.sql.Timestamp到底是不是包含了微秒
看具体情况,这是因为Timestamp本身有多个初始化方式:
public Timestamp(int year, int month, int date,int hour, int minute, int second, int nano) -- 可以到微秒,但是从jdk1.8就被标注为过时,这是因为有异常风险
public Timestamp(long time) time是毫秒,不支持微秒
public void setTime(long time) time是毫秒,不支持微秒
public static Timestamp valueOf(String s) -- 可以支持微秒,但对s有格式要求
public static Timestamp valueOf(LocalDateTime dateTime) --可以支持微秒
public static Timestamp from(Instant instant) -- 可以支持微秒,这是因为Instant类型支持到纳秒
3.如何格式java的时间类型到微秒
使用SimpleDateFormat是无法格式化到微秒的,所以网络上说SimpleDateFormat格式化到微秒,那是错误的。
只能使用java.time.format.DateTimeFormatter才可以格式化出微秒
以下示例如何创建一个包含纳秒的时间,并格式化输出:
/**
* 格式化到微秒,必须配合 DateTimeFormatter
* @param time
* @return
*/
private String formatTo(Timestamp time) {
String format="yyyy/MM/dd HH:mm:ss.SSSSSS";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
LocalDateTime now=LocalDateTime.ofInstant(time.toInstant(), ZoneId.systemDefault());
return now.format(formatter);
//SimpleDateFormat form=new SimpleDateFormat(format);
//return form.format(time);
} public static void main(String[] args) {
TestTimestamp t=new TestTimestamp();
Timestamp ts2=Timestamp.valueOf("2024-02-04 12:39:45.898777");
System.out.println(t.formatTo(ts2));
}
关于java时间类型和格式化到微秒问题的更多相关文章
- Java浮点类型的格式化
概述 基于Java,介绍将浮点类型小数进行格式化的方案. 正文 在Java中,用于格式化小数的类是java.text.DecimalFormat,比如你可以这样使用: double data = 33 ...
- java时间类型操作
java中Date类型与字符串相互转化 Date date = new Date(); System.out.println(date); //DateFormat类为一个 ...
- java时间类型的转换/获取当前时间/将时间转换成String/将String转换成时间
对于我的脑子,我已经服气了...写了N遍的东西,就是记不住...既然记不住那就记下来... 利用java获取当前的时间(String类型,年-月-日 时:分:秒) //我要获取当前的日期 Date d ...
- EL表达式获取日期时间类型后格式化的问题
最近在项目中遇到的问题,就是从后台取到的java.util.Date类型的数据,在前台需要格式化的问题. 开始想了很多办法,其实在JSP页面中处理很简单,JSTL提供的format标签即可解决这个问题 ...
- SpringBoot2 时间类型自动格式化 自动转换
package com.archibladwitwicke.springboot2.chapter03.configurer; import com.archibladwitwicke.springb ...
- Java时间转换类实现
Java时间类型非常的差,首先版本问题,本人使用java在Android平台开发.很多Data类的方法已经不提倡使用,一个时间,居然要使用Calendar.DateFormat等类共同编码,非常麻烦. ...
- MySql与对应的Java的时间类型
MySql的时间类型有 Java中与之对应的时间类型date java.sql.Date Date ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...
- Java 之 JDK 1.8 新增日期时间类型
一.原来的日期时间 Java1.0中包含了一个Date类,但是它的大多数方法已经在Java 1.1引入Calendar类之后被弃用了.而Calendar并不比Date好多少.它们面临的问题是: ① 可 ...
随机推荐
- [FAQ] Phpstorm 代码提示功能失效问题
如果是之前有代码提示,中间突然不出现提示了,那么考虑重建一下项目索引. 示例: Refer:Phpstorm代码提示 Link:https://www.cnblogs.com/farwish/p/13 ...
- [FAQ] web3js, Error: [number-to-bn] while converting number 0.1 to BN.js instance, error: invalid number value
我们在调用合约方法时,都可以传一些参数的,比如转账金额 value. value 的单位是 wei,这是一个很小的单位,所以一般数值很大. 如果误把 ether 当成 wei 传参,就会报标题中的错误 ...
- GitHub Action 新上线 WPF .NET Core 自动构建模板
在很土豪的微软免费给大家提供 GitHub 的构建服务器受到了小伙伴们的一堆好评之后,微软最近推出了 WPF 的 .NET Core 版本的模板,可以快速上手 WPF 项目的自动构建,支持自动进行单元 ...
- 程序员天天 CURD,怎么才能成长,职业发展的思考 ?
前言 关于程序员成长的话题,我前面写过一篇文章 - 程序员天天CURD,职业生涯怎么发展的思考. 现在回头看,对程序员这个职业发展的认识以及怎么发展还是有一些局限性.有一句话是这么说的:人的成长就是不 ...
- ITSM2023年十大功能趋势[采和]
总体描述:更加人性化,引入自动化相关的设计和技术,更加实用好用.1. 100%服务目录服务目录必须完全贴合用户方的运维实际开展的 服务清单,而不是想当然的抄书或者臆想!都2023年了,还有完全不着调的 ...
- C数据结构:哈夫曼树算法实现与应用
学习哈夫曼树(编码) 带权二叉树 认识WPL 最优二叉树 构造哈夫曼树的过程 哈夫曼树的应用 建立哈夫曼树 代码如下: 结构体代码部分 建立操作代码 找到最小结点(※难点) 附上建立哈夫曼树源代码 带 ...
- python命令行传参详解,optparse模块OptionParse类的学习
官网链接:https://docs.python.org/3/library/optparse.html https://docs.python.org/2/library/argparse.html ...
- Maven到底是什么
Maven 是一个项目管理工具,它最主要的两个功能就是:依赖管理和项目构建. 何为依赖管理 在传统项目中,我们的项目如果需要第三方提供的库就必须得去官网上下载,有了Maven我们只需要在pom文件 ...
- 记一次 .NET某企业数字化平台 崩溃分析
一:背景 1. 讲故事 前些天群里有一个朋友说他们软件会偶发崩溃,想分析看看是怎么回事,所幸的是自己会抓dump文件,有了dump就比较好分析了,接下来我们开始吧. 二:WinDbg 分析 1. 程序 ...
- 七年之痒!一个 PHP 程序员职业生涯的自述
大家好,我是码农先森. 今年刚好是我毕业的第七个年头,在婚姻感情当中都有一种「七年之痒」的说法,这次我把这个词「七年之痒」用一次在我的职业生涯复盘上.七年前我从告别校园,踏入互联网编程行业,七年后我依 ...