关于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好多少.它们面临的问题是: ① 可 ...
随机推荐
- [Nova] belongsTo, belongsToMany 当前页动态 dependsOn 其它 fields, nova-belongs-to-dependency, belongs-to-many-field-nova
nova-belongs-to-dependency 例子: use Manmohanjit\BelongsToDependency\BelongsToDependency; ... return [ ...
- dotnet 使用 windbg 运行脚本方式自动批量调试处理 dump 文件
本文将和大家介绍一个简单且实际用途不大的使用 windbg 配合脚本的方式,进行自动化的大批量对 dotnet 系应用的 dump 进行自动化分析调试处理,可以自动根据调试需求输出 dump 文件的一 ...
- dotnet C# 使用 Vortice 支持 Direct2D1 离屏渲染
本文告诉大家如何使用 Vortice 进行 D2D 的离屏渲染功能,本文将在一个纯控制台无窗口的应用下,使用 Direct2D1 进行离屏绘制,将绘制结果保存为本地图片文件 本文属于使用 Vortic ...
- 基于Jenkins+k8s+Git等技术构建DeOps平台
一.DeOps简介 1.什么是DeOps? 1.1 敏捷开发 提高开发效率,及时跟进用户需求,缩短开发周期. 敏捷开发包括编写代码和构建代码两个阶段,可以使用 git 或者 svn 来管理代码,用 ...
- 利用Navicat的历史日志查询表的索引信息(还可以查询很多系统级别的信息)
1.使用前提 所有的能用Navicat连接的数据库都可以使用这个方法 DDL/DML语句都有 2.Navicat中的历史日志 3.比如查询mysql的表的索引 先打开"历史记录" ...
- Ruby on Rails Active Record数据库常用操作
目录 创建 批量插入 判断是否存在 Ruby on Rails 日期查询方法 文档地址: https://freed.gitee.io/rails-guides/active_record_query ...
- 纯JavaScript制作动态增加的网页数字
看到别的网页上打开,会显示一个动态的数字,感觉这个效果增加了网页的灵动感.就尝试着写代码,最终实现的方法: 会从0增加到一个数值,实现的代码: <!-- html 部分 --> <d ...
- VRRP 虚拟路由器冗余协议
目录 文章目录 目录 为什么要使用 VRRP 技术? VRRP VRRP 的概念 VRRP 的工作原理 VRRP 的状态机 VRRP 的工作过程 VRRP 的选举机制 VRRP 的报文格式 VRRP ...
- 网络性能评估工具Iperf详解
一.网络性能评估工具Iperf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高.要找到网络 ...
- apisix~集成服务发现注册中心
摘要 当业务量发生变化时,需要对上游服务进行扩缩容,或者因服务器硬件故障需要更换服务器.如果网关是通过配置来维护上游服务信息,在微服务架构模式下,其带来的维护成本可想而知.再者因不能及时更新这些信息, ...