Java中用DateFormat解析日期

本文介绍如何使用Java中的SimpleDateFormat和DateFormat类将字符串形式的日期解析为Date类型,通过实例展示了不同方法的应用场景。
      从字符串形式的日期解析为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()得到的实例解析出的时间是字符串中所写的时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值