java日期格式化、解析

时间:2024-03-05 20:35:20

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();  

        }  

    }  

  

}  

上述程序运行结果如下: