java中Date和Timestamp类型的相互转换方式
作者:最小的帆也能远航
这篇文章主要介绍了java中Date和Timestamp类型的相互转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
java Date和Timestamp类型相互转换
重要的概念
日期类和时间戳类都是用一个时间数值——日期相对于基准日期(1970年1月1日 GMT时间(格林尼治时间)0时0分0秒)的时间间隔(以毫秒为单位)long类型 来构造的
通过Date对象和Timestamp对象的getTime() 方法——获取时间数值,作为中间变量,可以实现转换
import java.sql.Timestamp; import java.util.Date; public class Test{ public static void main(String[] args){ //Date 转 Timestamp Date d = new Date(); //系统时间 System.out.println(d.toString()); //Wed Dec 14 17:47:51 CST 2022 (CST表示北京时间) long time = d.getTime(); System.out.println(time); //1671011534602,这其实是以毫秒为单位的 Timestamp timestamp = new Timestamp(time); System.out.println(timestamp.toString()); //2022-12-14 17:47:51.531 (构造的时间戳有毫秒) //Timestamp 转 Date Timestamp timestamp2 = new Timestamp(1671011899628l); //是2022-12-14 17:58:19.628的时间数值 System.out.println(timestamp2.toString()); //2022-12-14 17:58:19.628 long time2 = timestamp2.getTime(); Date date2 = new Date(time2); System.out.println(date2.toString()); //Wed Dec 14 17:58:19 CST 2022 (Date类型没有毫秒) } }
Date、Timestamp、String、Calendar之间的关系和转换
最近接到一个需求就是需要查询指定时间范围内的所有用户信息,而且需要拿到范围内的所有年月字符串~
其实这个并不难,但是数据库中的时间类型是Timestamp类型的,而要求传入的时间类型为Date类型,所以就会涉及到时间类型的转换,这里我就把最近接触到的时间类型之间的转换总结下,供大家参考~
1、StringToDate
@Test public void testStringToDate() throws ParseException { String dateStr = "2021-12-10 11:11:11"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //java.util包下的Date类; Date date = sdf.parse(dateStr); System.out.println(date.toString()); //Fri Dec 10 11:11:11 CST 2021 }
2、DateToString
@Test public void testDateToString(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdf.format(date); System.out.println(dateStr); // 2021-12-10 10:22:31 }
3、DateToTimeStamp
@Test public void testDateToTimeStamp(){ Date date = new Date(); Timestamp timestamp = new Timestamp(date.getTime()); System.out.println(timestamp); // 2021-12-10 10:29:25.978 }
4、TimestampToDate
@Test public void testTimestampToDate(){ Timestamp timestamp = new Timestamp(System.currentTimeMillis()); Date date = new Date(timestamp.getTime()); System.out.println(date); // Fri Dec 10 10:30:16 CST 2021 }
5、StringToTimestamp
@Test public void testStringToTimestamp(){ String dateStr = "2021-12-10 11:11:11"; Timestamp timestamp = Timestamp.valueOf(dateStr); System.out.println(timestamp); // 2021-12-10 11:11:11.0 }
6、TimestampToString
@Test public void testTimestampToString(){ Timestamp timestamp = new Timestamp(System.currentTimeMillis()); SimpleDateFormat sdf = new SimpleDateFormat(); String s = sdf.format(timestamp); System.out.println(s); // 21-12-10 上午10:27 }
7、DateToCalendar
@Test public void testDateToCalendar(){ Date date = new Date(); Calendar instance = Calendar.getInstance(); instance.setTime(date); System.out.println(instance.getTime()); // Fri Dec 10 10:36:39 CST 2021 }
8、CalendarToDate
@Test public void testCalendarToDate(){ Calendar instance = Calendar.getInstance(); Date time = instance.getTime(); System.out.println(time); // Fri Dec 10 10:56:30 CST 2021 }
其实时间的类型有好多种,但是其实转换还是比较简单。
为了方便我们处理时间对象,比如:拿日期中的年份月份等信息,我们还有各种时间工具类,还是很方便的啦~
有些时间类的API已经过时了,大家最好用比较新的API,避免不必要的差值!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。