在Java裡面時間轉換格式是一個很麻煩的課題

因為時間的表達方法各種各樣,有些人寫2015/07/03,有些人寫07/03/2015,有些人寫July 03 /2015,麻煩的是07/03到底表示的是三月七號還是七月三號呢?
所以在Java裡面有個class來格式化日期的類別叫SimpleDateFormat
關於格式的設定詳情請看api文件Date and Time Patterns
格式設定的語法大概如下
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
注意大寫的M代表月份,小寫的m代表的是分鐘

主要的方法有兩個:parse跟format
parse是把字串轉換成日期型態
format是將日期型態轉換成字串

最後特別提一個setLenient方法,他會另外檢查你輸入的值合不合法
預設值是true,改為false的話你輸入15月他會跳出錯誤訊息,如果是true輸入15月或是40日這種他會自動轉成第二年三月或是第二個月10日等等。

以下是範例程式碼

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;





public class DateFormatDemo {



public static void main(String[] args) throws ParseException {



SimpleDateFormat sdfor = new SimpleDateFormat("yyyy/MM/dd");

Date date = sdfor.parse("2015/07/03");

System.out.println(date);//Fri Jul 03 00:00:00 CST 2015

System.out.println(sdfor.format(date));//2015/07/03



sdfor = new SimpleDateFormat("yyyy/mm/dd");

date = sdfor.parse("2015/07/03");

System.out.println(date);//Sat Jan 03 00:07:00 CST 2015



sdfor = new SimpleDateFormat("yyyy");

date = sdfor.parse("2015");

System.out.println(date);//Thu Jan 01 00:00:00 CST 2015

System.out.println(sdfor.format(date));//2015



sdfor = new SimpleDateFormat("MM月");

date = sdfor.parse("12月");

System.out.println(date);//Tue Dec 01 00:00:00 CST 1970

System.out.println(sdfor.format(date));//12月





SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

System.out.println(sdf.parse("1985/15/48"));



// sdf.setLenient(false);

// System.out.println(sdf.parse("1985/15/48"));//執行會跳exception

}



}//end of class
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dnight 的頭像
    Dnight

    D奈老師的部落格

    Dnight 發表在 痞客邦 留言(0) 人氣()