Java java.sql.Timestamp时间戳案例详解
作者:javaPie 发布时间:2023-11-10 13:50:47
java.sql.Timestamp(时间戳)
继承父类:java.util.Date
所有已实现的接口:Serializable, Cloneable, Comparable<Date>
主要构造方法:Timestamp(long millis) 使用毫秒时间值构造 Timestamp 对象。
Timestamp允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQLTIMESTAMP 小数秒值的能力。
Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力,主要用于写一些与数据库连接时的日期处理。
例如:
在 ResultSet中我们经常使用的setDate或getDate的数据类型是java.sql.Date,而在平时java程序中我们一般习惯使用 java.util.Date。
但是java.sql.Date 只存储日期数据不存储时间数据 ,这种符合规范的类型其实并没有把时分秒存进数据库,所以存取时就应该用Timestamp的setTimestamp()和
getTimestamp()。
整理一: String --> Timestamp:
Timestamp转换为String可以直接.toString(),但有时候显示时是不需要小数位后面的毫秒值,需要借助DateFormat在转换为String时重新定义格式。
使用Timestamp的valueOf()方法,
Timestamp time= new Timestamp(System.currentTimeMillis());//获取系统当前时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String timeStr = df.format(time);
time = Timestamp.valueOf(timeStr);
System.out.println(time);//2017-05-06 15:54:21.0
整理二: java.util.Date --> Timestamp
方式1: 使用Timestamp的构造方法
Date date = new Date();
Timestamp ts = new Timestamp(date.getTime());
方式2:
注意:父类不能直接向子类转化,需要借助中间的String,并且format的格式要与Timestamp的字符串类型格式相匹配
java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
Date date = new Date();
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(date);
Timestamp ts = Timestamp.valueOf(dateStr); //2017-05-06 15:54:21.0
整理三:
通过构造方法创建Timestamp 对象,获取毫秒值有下面三种方法:
方法1:
System.currentTimeMillis();
方法2:
Calendar.getInstance().getTimeInMillis();
方法3:
new Date().getTime();
测试证明:System.currentTimeMillis() 这种方式速度最快
Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,因为Canlendar因为要处理时区问题会耗费很多的时间。
所以建议多使用第一种方式。
方法摘要
boolean after(Timestamp ts)
指示此 Timestamp 对象是否晚于给定的 Timestamp 对象。
boolean before(Timestamp ts)
指示此 Timestamp 对象是否早于给定的 Timestamp 对象。
int compareTo(Date o)
将此 Timestamp 对象与给定的 Date(必须为 Timestamp 对象)相比较。
int compareTo(Timestamp ts)
将此 Timestamp 对象与给定 Timestamp 对象相比较。
boolean equals(Object ts)
测试此对象是否等于给定的 Timestamp 对象。
boolean equals(Timestamp ts)
测试此 Timestamp 对象是否等于给定的 Timestamp 对象。
int getNanos()
获取此 Timestamp 对象的 nanos 值。
long getTime()
返回此 Timestamp 对象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
void setNanos(int n)
将此 Timestamp 对象的 nanos 字段设置为给定值。
void setTime(long time)
设置此 Timestamp 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
String toString()
使用 JDBC 时间戳转义格式编排时间戳。
static Timestamp valueOf(String s)
将使用 JDBC 时间戳转义格式的 String 对象转换为 Timestamp 值。
实例代码:
tLotteryAnnouncement.setDateTime(new Timestamp(System.currentTimeMillis()));
if(StringUtils.isNotBlank(tIsusesKj.getOpenTime())){
tLotteryAnnouncement.setOpenTime(Timestamp.valueOf(tIsusesKj.getOpenTime()));
}else{
tLotteryAnnouncement.setOpenTime(new Timestamp(tIsusesKj.getModifyDate().getTime()));
}
来源:https://blog.csdn.net/evilcry2012/article/details/78179795/


猜你喜欢
- 一、作用和区别 break的作用是跳出当前循环块(for、while、do while)或程序块(switch)。在循环块中的作用
- import java.util.Calendar;import java.util.Date;public class Matrix {&
- 前言app启动后的白屏问题,默认都是在splash页面加主题配置,主题配置一个背景来达到用户点击app图标就立马启动app的假象,大多情况下
- 本文实例讲述了Android编程实现将ButtonBar放在屏幕底部的方法。分享给大家供大家参考,具体如下:前面一篇《Android编程实现
- 前言本节我们将学习一下@PostConstruct的用法。概述@PostContruct是spring框架的注解,在方法上加该注解会在项目启
- Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。
- 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java
- 前言线程是一个程序内部的顺序控制流。cpu实际上在一个时间点上,只执行一个。只不过我们把cup分成了多个时间片,由于速度很快,我们看起来像是
- 题目一:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比
- 同一个service调用service本身如果同一个service调用service本身的方法,出现了事务不能控制。解决方案1.在sprin
- 本文实例讲述了Java中的异常和处理机制。分享给大家供大家参考,具体如下:简介程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期
- 最近在做一个项目涉及到将包含图片的简单网页下载到本地,方便离线时观看,在这里分享一下,大家做下简单修改就可以用到自己的项目中了。(这里用到了
- 一、下载https://www.eclipse.org/downloads/download.php?file=/oomph/epp/202
- 第一次写上传图片的代码,碰到很多问题。昨天做了整整一天,终于在晚上的时候成功了。大声欢呼。但是,做完之后,还是有很多问题想不通。所以在这里也
- 我们经常会看到有一些app的banner界面可以实现循环播放多个广告图片和手动滑动循环的效果。看到那样的效果,相信大家都会想到ViewPag
- using System;using System.Collections;using System.Windows.Forms;names
- 作用mybatis-plus接口mapper方法中的注解(如@Select)或者xml(如)传入的参数是通过#{param}或者${para
- 在使用SpringBoot做接口访问如何做接口的限流,这里我们可以使用google的Guava包来实现,当然我们也可以自己实现限流,Guav
- Java NIO读取大文件已经不是什么新鲜事了,但根据网上示例写出的代码来处理具体的业务总会出现一些奇怪的Bug。针对这种情况,我总结了一些
- Selenium IDE 是Firefox 浏览器的一个插件, 它会记录你对Firefox的操作,并且可以回放它的操作。 用法简单,不过我觉