1. 程式人生 > >java.util.Date、java.sql.Timestamp、java.sql.Date以及String互轉

java.util.Date、java.sql.Timestamp、java.sql.Date以及String互轉

java 時間型別轉換

1、 ①long型時間戳轉為各型別時間。②各型別時間格式化解析為字串。
這裡所有時間日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f = new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss:SSS”);(大小寫有差別)
long timeMillis = f.parse(“2018/09/03 14:48:25:123”).getTime();
System.out.println(“sql.Timestamp format === ” + f.format(new java.sql.Timestamp(timeMillis)));
System.out.println(“util.Date format === ” + f.format(new java.util.Date(timeMillis)));
System.out.println(“sql.Date format === ” + f.format(new java.sql.Date(timeMillis)));
列印結果:
sql.Timestamp format === 2018/09/03 14:48:25:123
util.Date format === 2018/09/03 14:48:25:123
sql.Date format === 2018/09/03 14:48:25:123 我們發現java.sql.Date解析為String後和其它完全一樣,那我們為什麼不用java.sql.Date呢?

小結:
① long型的時間戳可以轉換為任意時間型別,因此時間戳是最關鍵的共同點,可以藉助這一特點互相轉換,
特別注意,即便是java.sql.Date,也不會因為相互轉換而丟失精度。
② 各型別時間解析為String值完全相同,說明java.sql.Date本身是有時間部分的精度,只是在讀寫資料庫時
PreparedStament的setDate()方法和ResultSet的getDate()方法只取了java.sql.Date的日期部分,而丟掉了時間部分,
因此讀寫資料庫不建議使用java.sql.Date 應該使用java.sql.Timestamp。

2、java.sql.Timestamp和 java.util.Date 互轉:
java.sql.Timestamp dToTimestamp = new java.sql.Timestamp(new java.util.Date().getTime());
java.util.Date tspToDate = new java.util.Date(new java.sql.Timestamp(System.currentTimeMillis()).getTime());

3、字串直接轉Timestamp 要求 String的型別必須形如: yyyy-mm-dd hh:mm:ss[.f…] 這樣的格式,中括號表示可選,否則報錯
Timestamp ts = Timestamp.valueOf(“2018-07-27 15:25:11” );

4、日期計算的時候,使用java.util.Calendar非常方便
SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);
java.util.Calendar cal = Calendar.getInstance();//預設獲取當前日期
//cal.setTime(format.parse(“2016-01-01”))//指定日期
//cal = new GregorianCalendar(2016, 01, 01, 16, 25, 34);//指定日期
String nowDate = format.format(cal.getTime());// 獲取當前日期
cal.add(Calendar.MONTH, -1);// 獲取上個月日期
System.out.println(“上月日期startDate = ” +format.format(cal.getTime()));
System.out.println(“當前日期 nowDate = ” + nowDate);

5、另類獲取得年月日的方法,SimpleDateFormat解析日期
如果希望得到YYYYMMDD的格式SimpleDateFormat
sf=new SimpleDateFormat(“yyyy-MM-dd”);
String dateFormat=sf.format(date);
如果希望分開得到年,月,日SimpleDateFormat
sy=new SimpleDateFormat(“yyyy”);
SimpleDateFormat sm=new SimpleDateFormat(“MM”);
SimpleDateFormat sd=new SimpleDateFormat(“dd”);
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);