SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");//yyyy-MM-dd'T'HH:mm:ss Date date1 = null; try { date1 = formatter.parse("2018-11-07T18:37:42.803+08:00"); System.out.println("先 解析成Data="+date1);//解析Data=Wed Nov 07 18:37:42 CST 2018 } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sDate=sdf.format(date1);//轉換指定2格式=2018-11-07 18:37:42 System.out.println(sDate);
package com.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.junit.Test; public class TestDate { @Test public void testSimpleDateFormat(){ DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = new Date(); System.out.println(dateFormat.format(date)); String dateStr = "1990-12-12 12:12:12"; Date date2 = null; try { date2 = dateFormat.parse(dateStr); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(date2); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");//yyyy-MM-dd'T'HH:mm:ss Date date1 = null; try { date1 = formatter.parse("2018-11-07T18:37:42.803+08:00"); System.out.println("先 解析成Data="+date1);//解析Data=Wed Nov 07 18:37:42 CST 2018 } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sDate=sdf.format(date1);//轉換指定2格式=2018-11-07 18:37:42 System.out.println(sDate); String timeStr = "2017-02-23T00:00:00.0+08:00"; SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); try { Date date11 = formatter1.parse(timeStr); System.out.println("轉換為日期"+date11); System.out.println("轉換為日期獲取時間戳"+date11.getTime()); System.out.println("轉換為日期獲取時間戳減兩小時"+(date11.getTime()-7200000)); System.out.println("轉換為日期獲取時間戳減兩小時的日期格式"+new Date(date11.getTime()-7200000)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );
這一行最重要,它確立了轉換的格式,yyyy是完整的公元年,MM是月份,dd是日期,至於HH:mm:ss
就不需要我再解釋了吧!
PS:為什么有的格式大寫,有的格式小寫,那是怕避免混淆,例如MM是月份,mm是分;HH是24小
時制,而hh是12小時制。
1.字符串轉日期
2008-07-10 19:20:00 要把它轉成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " );
2.日期轉字符串
假如把今天的日期轉成字符串可用 String str = sdf.format(new Date());
這個字符串內容的格式類似2008-07-10 19:20:00。
透過這個API我們便可以隨心所欲的將日期轉成我們想要的字符串格式,例如希望將日期輸出成2008
年7月10日,我們可以這么寫:
SimpleDateFormat sdf = new SimpleDateFormat( " yyyy年MM月dd日 " );
String str = sdf.format(new Date());
str便會依照我們設定的格式輸出了
Calendar
/** * 獲取兩個日期相差的月數 */ public static int getMonthDiff(Date d1, Date d2) { Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c1.setTime(d1); c2.setTime(d2); int year1 = c1.get(Calendar.YEAR); int year2 = c2.get(Calendar.YEAR); int month1 = c1.get(Calendar.MONTH); int month2 = c2.get(Calendar.MONTH); int day1 = c1.get(Calendar.DAY_OF_MONTH); int day2 = c2.get(Calendar.DAY_OF_MONTH); // 獲取年的差值 int yearInterval = year1 - year2; // 如果 d1的 月-日 小於 d2的 月-日 那么 yearInterval-- 這樣就得到了相差的年數 if (month1 < month2 || month1 == month2 && day1 < day2) yearInterval--; // 獲取月數差值 int monthInterval = (month1 + 12) - month2; if (day1 < day2) monthInterval--; monthInterval %= 12; int monthsDiff = Math.abs(yearInterval * 12 + monthInterval); return monthsDiff; }