原创

IllegalArgumentException at java.sql.Date.getHours JSONException

        Java 日期数据转换时报 java.lang.IllegalArgumentException at java.sql.Date.getHours JSONException 错误,分析原因是由于 java.util.Date 和 java.sql.Date 转换造成的问题。


java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分继承了 java.sql.Date,被继承关系如下:

java.lang.Object --> java.util.Date --> java.sql.Date

案例 java.util.Date 转换成 java.sql.Date 报错,反之正常,具体代码如下:

package com.yoodb;
import java.util.Date;
public class TestMain {
	public static void main(String[] args) {
		Date date = new Date();
		java.sql.Date da = (java.sql.Date) date;
		System.out.println(da);
	}
}

错误日志如下:

Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
	at com.yoodb.TestMain.main(TestMain.java:6)


将"yyyy-mm-dd"格式的字符串转换为java.sql.Date,具体代码如下:

package com.yoodb;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class TestMain {
	public static void main(String[] args) {
		SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String dateStringToParse = "2015-11-04";
		java.util.Date date;
		try {
			date = bartDateFormat.parse(dateStringToParse);
			java.sql.Date sqlDate = new java.sql.Date(date.getTime());
		    System.out.println(sqlDate.getTime());
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

java.sql.Date主要是用于数据库sql语句中,java.sql.Date是为了配合SQL DATE而设置的数据类型。“规范化”的java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。

关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信