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异常。