原创

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),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信