java日期格式化、解析

来源:互联网 发布:java工程师职业发展 编辑:程序博客网 时间:2024/06/09 04:31
        今天移植别人的通用工具类,涉及到了日期的格式化、解析,学习结果记录如下。

        日期的格式化器普用的是SimpleDateFormat,它继承了了DateFormat。SimpleDateFormat为用户提供了更多的控制功能,更灵活。

        但是有两点需要注意:使用SimpleDateFormat解析字符串日期的时候要放入一个try代码块,以防遇到特殊的日期格式抛出异常;获取SimpleDateFormat实例的时候最好使用DateFormat的getTimeInstance、getDateInstancegetDateTimeInstance类方法来获取。因为new一个SimpleDateFormat不适用于所有的地区,在国际化的时候会遇到问题,当然这个问题很难遇到了,但是还是小心为好。

   总结一下SimpleDateFormat的用法其实很简单:建立格式器(SimpleDateFormat)DateFormat.getDateInstance()--->添加格式applyPattern(pattern)--->格式化、解析日期format(Date)、parse(String)。

代码如下:

[java] view plaincopy
  1. /** 
  2.  * 格式化、解析日期测试类 
  3.  */  
  4. package com.date_test;  
  5.   
  6. import java.text.DateFormat;  
  7. import java.text.ParseException;  
  8. import java.text.SimpleDateFormat;  
  9. import java.util.Date;  
  10.   
  11. /** 
  12.  * @author wkupaochuan 
  13.  * @time Jun 14, 2012 
  14.  * @version V 1.0 
  15.  */  
  16. public class DateFormat_test {  
  17.       
  18.     public static void main (String agrs[])  
  19.     {  
  20.         //获取当前时间  
  21.         Date dNow = new Date();  
  22.         //建立日期格式化器,这里是获取的默认语言环境、默认格式的格式器  
  23.         SimpleDateFormat df = (SimpleDateFormat)DateFormat.getDateInstance();  
  24.           
  25.           
  26.         /*格式化日期,并输出*/  
  27.         //最普遍的格式  
  28.         df.applyPattern("yyyy-MM-dd HH:mm:ss");  
  29.         System.out.println("最普遍的格式:  " + df.format(dNow));  
  30.         //年份俭省格式  
  31.         df.applyPattern("yy-MM-dd HH:mm:ss");  
  32.         System.out.println("年份俭省格式:  " + df.format(dNow));  
  33.         //省略年份和具体时间格式  
  34.         df.applyPattern("MM-dd");  
  35.         System.out.println("省略年份和具体时间格式:  " + df.format(dNow));  
  36.         //采用12小时制格式  
  37.         df.applyPattern("yyyy-MM-dd hh:mm:ss");  
  38.         System.out.println("采用12小时制格式:  " + df.format(dNow));  
  39.         //省去个位数时前面的0格式  
  40.         df.applyPattern("yyyy-m-dd h:mm:ss");  
  41.         System.out.println("省去个位数时前面的0格式:  " + df.format(dNow));  
  42.         //更为自由的格式,嵌入字符、换行等,字符要用''包含  
  43.         df.applyPattern("yyyy'年'M'月'd'日'\nh'时'm'分'mm'秒'");  
  44.         System.out.println("更为自由的格式,嵌入字符、换行等:\n"   
  45.                 + df.format(dNow) + "\n\n\n");  
  46.           
  47.           
  48.         /*解析字符串日期*/  
  49.         String dTest = "2012-09-10";  
  50.         //这里的异常处理是必须、必要的,防止出现特殊格式的字符串日期  
  51.         try   
  52.         {  
  53.             /*将字符串转化为Date类型时,要注意df的格式与字符串日期的格式保持一致, 
  54.              * 否则抛出异常 
  55.              * */  
  56.             df.applyPattern("yyyy-MM-dd");  
  57.             Date ddTest = df.parse(dTest);  
  58.             //这里输出的日期仍然是默认格式,而非之前设定的格式  
  59.             System.out.println(ddTest);  
  60.         }  
  61.         catch (ParseException e)   
  62.         {  
  63.             // TODO Auto-generated catch block  
  64.             e.printStackTrace();  
  65.         }  
  66.     }  
  67.   
  68. }  

上述程序运行结果如下:


 

 


原创粉丝点击