因為時間的表達方法各種各樣,有些人寫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
沒有留言:
張貼留言