一、什么是Date和Timestamp
在Java中,Date和Timestamp都是表示时间的类,它们的区别在于精度不同。
Date的精度只能到毫秒,而Timestamp的精度可以到纳秒级别,因此在需要更高精度的时间计算中,应使用Timestamp。
二、Date转换为Timestamp的方式
Java中提供了两种方式将Date转换为Timestamp:直接转换和通过字符串转换。
1、直接转换
Date date = new Date(); Timestamp timestamp1 = new Timestamp(date.getTime());
在这种方式中,我们可以通过Date的getTime()方法获取其对应的时间戳,并将其传递给Timestamp的构造函数。
2、通过字符串转换
String str = "2022-01-01 00:00:00"; Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str); Timestamp timestamp2 = new Timestamp(date.getTime());
在这种方式中,我们首先需要将字符串转换为Date类型,然后再将其转换为Timestamp。
这里需要注意的是,需要使用SimpleDateFormat类来解析字符串,通过指定对应的格式,将字符串转换为Date类型。
三、Timestamp转换为Date的方式
与将Date转换为Timestamp相反,我们同样可以通过两种方式将Timestamp转换为Date:Timestamp的构造函数和格式化字符串。
1、Timestamp的构造函数
Timestamp timestamp = new Timestamp(System.currentTimeMillis()); Date date1 = new Date(timestamp.getTime());
在这种方式中,我们可以通过Timestamp的getTime()方法获取其对应的时间戳,并将其传递给Date的构造函数。
2、格式化字符串
String str = "2022-01-01 00:00:00"; Timestamp timestamp = Timestamp.valueOf(str); Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str);
在这种方式中,我们可以通过Timestamp类的valueOf()方法将字符串转换为Timestamp类型,然后通过SimpleDateFormat类将其转换为Date类型。
四、完整代码示例
import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; public class Test { public static void main(String[] args) throws Exception { // Date转换为Timestamp Date date = new Date(); Timestamp timestamp1 = new Timestamp(date.getTime()); String str = "2022-01-01 00:00:00"; date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str); Timestamp timestamp2 = new Timestamp(date.getTime()); // Timestamp转换为Date Timestamp timestamp = new Timestamp(System.currentTimeMillis()); Date date1 = new Date(timestamp.getTime()); str = "2022-01-01 00:00:00"; timestamp = Timestamp.valueOf(str); Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str); } }