从字符串形式的日期解析为Date类型日期是常用的操作,之前呢要完成这样的操作,总是先使用SimpleDateFormat构造出一个格式化器,然后调用parse()方法并将待解析的字符串传入,具体如下:
package com.liu;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class DateFormatTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(simpleDateFormat.parse("2013-5-6"));
}
}
输出为:
Mon May 06 00:00:00 CST 2013
可是最近想改改口味,换种方式,想用DateFormat类中相关方法完成这样的操作,于是就有了下面的代码:package com.liu;
import java.text.DateFormat;
import java.text.ParseException;
public class DateFormatTest {
public static void main(String[] args) throws ParseException {
DateFormat dateFormat = DateFormat.getInstance();
//用得到的实例格式化字符串形式的日期
System.out.println(dateFormat.parse("2013-5-6"));
}
}
可是输出的结果却让我傻了眼:Exception in thread "main" java.text.ParseException: Unparseable date: "2013-5-6"
at java.text.DateFormat.parse(Unknown Source)
at com.liu.DateFormatTest.main(DateFormatTest.java:10)
原因是我没得到合适的DateFormat实例,如果只需解析日期(不包括时间),应该使用DateFormat.getDateInstance()得到实例;如果需要解析日期和时间,应该使用DateFormat.getDateTimeInstance()得到实例,下面的代码便能实现字符串到日期及日期时间的解析:package com.liu;
import java.text.DateFormat;
import java.text.ParseException;
public class DateFormatTest {
public static void main(String[] args) throws ParseException {
DateFormat dateFormat1 = DateFormat.getDateInstance();
DateFormat dateFormat2 = DateFormat.getDateTimeInstance();
//用得到的实例dateFormat1格式化字符串形式的日期
System.out.println(dateFormat1.parse("2013-5-6"));
//用得到的实例dateFormat2格式化字符串形式的日期(包括时间)
System.out.println(dateFormat2.parse("2013-5-6 13:13:56"));
}
}
得到的结果:Mon May 06 00:00:00 CST 2013
Mon May 06 13:13:56 CST 2013
注意,使用getDateInstance()得到的实例也会解析出时间,只不过时间为当天的凌晨零点(一天的起始之际啊!),而getDateTimeInstance()得到的实例解析出的时间是字符串中所写的时间。