1. 程式人生 > >Java中關於Date時間型別

Java中關於Date時間型別

獲取時間

關於date 有以下獲取時間的方式:

        java.util.Date date= new java.util.Date();
		System.out.println(date);

		java.util.Calendar date4 = java.util.Calendar.getInstance();
		System.out.println(date4);//date4是物件,可以用date.得到時間方法
		
		//sql語句用
		java.sql.Date date1 = new java.sql.Date(new java.util.Date().getTime());
		System.out.println(date1);
		
		
		java.sql.Timestamp date2 = new java.sql.Timestamp(new java.util.Date().getTime());
		System.out.println(date2);

		
		java.sql.Time date3 = new java.sql.Time(new java.util.Date().getTime());
		System.out.println(date3);
		

總結:使用Calendar 獲取年,時,分,秒等更簡單。但是獲取日期是重0開始的。


Date的格式化

格式化使用SimpleDateFormat

// Date轉String
		java.text.SimpleDateFormat f = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		System.out.println("Date轉String:"+f.format(date4.getTime()));
// String轉Date
		Date date5 = null;
		try {
			date5 = f.parse("2018-01-22 08:31:28");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.print("String轉Date:"+date5);

注意:
SimpleDateFormat 不是執行緒安全的。
解決方法:
1.建立新例項。
2.使用synchronized關鍵字。

 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      
    public static String formatDate(Date date)throws ParseException{
        synchronized(sdf){
            return sdf.format(date);
        }  
    }

3.使用ThreadLocal。



計算差值

計算差值有兩種方式
1.獲獲取毫秒數,然後換成天數。

Long date6 = date.getTime() - date5.getTime();
System.out.println(date6 /(1000 * 24 * 60 * 60));

2.用Calendar 類獲取年月日進行計算,先獲得時分秒。然後兩個日期按照邏輯計算,獲得的時分秒為int型別。

        java.util.Calendar date7 = java.util.Calendar.getInstance();
		java.util.Calendar date8 = java.util.Calendar.getInstance();
		System.out.println(date7.get(Calendar.YEAR));
		System.out.println(date7.get(Calendar.MONTH));
		System.out.println(date7.get(Calendar.DAY_OF_MONTH));
		System.out.println(date7.get(Calendar.HOUR));
        //可以把其他時間型別轉為Calendar 型別
		date8.setTime(date5);
		System.out.println(date8.get(Calendar.MONTH));

3.計算某日期X年X月X日後的日期。

date7.add(Calendar.DAY_OF_MONTH, 20);
System.out.println(date7.getTime());