http://blog.csdn.net/wkupaochuan/article/details/7663276
今天移植別人的通用工具類,涉及到了日期的格式化、解析,學習結果記錄如下。
日期的格式化器普用的是SimpleDateFormat,它繼承了了DateFormat。SimpleDateFormat為用戶提供了更多的控制功能,更靈活。
但是有兩點需要注意:使用SimpleDateFormat解析字符串日期的時候要放入一個try代碼塊,以防遇到特殊的日期格式拋出異常;獲取SimpleDateFormat實例的時候最好使用DateFormat的getTimeInstance、getDateInstance 或getDateTimeInstance類方法來獲取。因為new一個SimpleDateFormat不適用於所有的地區,在國際化的時候會遇到問題,當然這個問題很難遇到了,但是還是小心為好。
總結一下SimpleDateFormat的用法其實很簡單:建立格式器(SimpleDateFormat)DateFormat.getDateInstance()--->添加格式applyPattern(pattern)--->格式化、解析日期format(Date)、parse(String)。
public class DateFormat_test {
public static void main (String agrs[])
{
//獲取當前時間
Date dNow = new Date();
//建立日期格式化器,這里是獲取的默認語言環境、默認格式的格式器
SimpleDateFormat df = (SimpleDateFormat)DateFormat.getDateInstance();
/*格式化日期,並輸出*/
//最普遍的格式
df.applyPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("最普遍的格式: " + df.format(dNow));
//年份儉省格式
df.applyPattern("yy-MM-dd HH:mm:ss");
System.out.println("年份儉省格式: " + df.format(dNow));
//省略年份和具體時間格式
df.applyPattern("MM-dd");
System.out.println("省略年份和具體時間格式: " + df.format(dNow));
//采用12小時制格式
df.applyPattern("yyyy-MM-dd hh:mm:ss");
System.out.println("采用12小時制格式: " + df.format(dNow));
//省去個位數時前面的0格式
df.applyPattern("yyyy-m-dd h:mm:ss");
System.out.println("省去個位數時前面的0格式: " + df.format(dNow));
//更為自由的格式,嵌入字符、換行等,字符要用''包含
df.applyPattern("yyyy'年'M'月'd'日'\nh'時'm'分'mm'秒'");
System.out.println("更為自由的格式,嵌入字符、換行等:\n"
+ df.format(dNow) + "\n\n\n");
/*解析字符串日期*/
String dTest = "2012-09-10";
//這里的異常處理是必須、必要的,防止出現特殊格式的字符串日期
try
{
/*將字符串轉化為Date類型時,要注意df的格式與字符串日期的格式保持一致,
* 否則拋出異常
* */
df.applyPattern("yyyy-MM-dd");
Date ddTest = df.parse(dTest);
//這里輸出的日期仍然是默認格式,而非之前設定的格式
System.out.println(ddTest);
}
catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
上述程序運行結果如下: