原创

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),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信