8.2.10 解析日期/时间字符串

优质
小牛编辑
134浏览
2023-12-01

本实例演示了如何通过DateFormat类的parse方法根据不同的本地环境解析日期/时间字符串,并将其转换成Date对象。在最后还演示了parse方法如何解析不符合日期/时间逻辑的字符串。

例子 : 解析日期/时间字符串

实例的代码如下:

package chapter8;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class ParseDateTime
{
    public static void main(String[] args) throws Exception
    {
        Date date = new Date();
        //  解析默认的日期/时间格式
        DateFormat df1 = DateFormat.getDateTimeInstance();
        System.out.println("默认日期/时间格式:" + df1.format(date));
        Date date1 = df1.parse("2020-4-18 12:28:12");
        System.out.println("解析后的日期/时间:" + date1);
        //  解析指定的日期/时间格式
        DateFormat df2 = DateFormat.getDateTimeInstance(DateFormat.SHORT,
                DateFormat.LONG, Locale.UK);
        System.out.println("指定的日期/时间格式:" + df2.format(date));
        //  解析不符合逻辑规则的日期/时间规则
        Date date2 = df2.parse("21/11/07 22:12:33 CST");
        System.out.println("解析后的日期/时间:" + date2);
        //  将下面语句的注释去掉,将抛出异常
        //  df2.setLenient(false);
        Date date3 = df2.parse("21/11/07 22:12:90 CST");   
        System.out.println("解析后的日期/时间(不符合日期/时间的逻辑规则):" + date3);       
    }
}

运行上面的程序后,将输出如下的信息:

默认日期/时间格式:2008-10-18 15:37:15

解析后的日期/时间:Sat Apr 18 12:28:12 CST 2020

指定的日期/时间格式:18/10/08 15:37:15 CST

解析后的日期/时间:Wed Nov 21 22:12:33 CST 2007

解析后的日期/时间(不符合日期/时间的逻辑规则):Wed Nov 21 22:13:30 CST 2007

如果将调用setLenient方法的注释去掉,parse方法在解析“21/11/07 22:12:90 CST”时将抛出ParseException异常。

要注意的是,被解析的日期/时间字符串必须完全符合DateFormat对象中的日期/时间格式,如日期/时间格式字符串“21/11/07 22:12:33 CST”中的CST也必须有。在日期、时间和CST之间至少要有一个空格(不能是tab等非可视字符,只能是空格),否则也会抛出ParseException异常。