java.util.Date和java.sql.Date相互转换问题

作者&投稿:茆蒋 (若有异议请与网页底部的电邮联系)
java.util.Date和java.sql.Date的区别和相互转化~

java.util.Date是在除了SQL语句的情况下面使用的。
java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分

们都有getTime方法返回毫秒数,自然就可以直接构建。 java.util.Date 是 java.sql.Date
的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他,后者之后在读写数据库的时候用他,因为PreparedStament的
setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date。
java.sql.Date转为java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());

java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());

这里所有时间日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
f.format(stp);
f.format(sTime);
f.format(sqlDate);
f.format(utilDate)
java.sql.Date sqlDate=java.sql.Date.valueOf(" 2005-12-12");
utilDate=new java.util.Date(sqlDate.getTime());

另类取得年月日的方法:
import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
//如果希望得到YYYYMMDD的格式SimpleDateFormat
sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
//如果希望分开得到年,月,日SimpleDateFormat
sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

共同点:都有getTime方法返回毫秒数,可以直接构建
不同点:
1、java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date
2、java.util.Date是在除了SQL语句的情况下面使用,一般是日常日期字段
3、java.util.Date 是 java.sql.Date 的父类,即:继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date
相互转化:
java.sql.Date转为java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
这里所有时间日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
f.format(stp);
f.format(sTime);
f.format(sqlDate);
f.format(utilDate)
java.sql.Date sqlDate=java.sql.Date.valueOf(" 2005-12-12");
utilDate=new java.util.Date(sqlDate.getTime());
另类取得年月日的方法:
import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
如果希望得到YYYYMMDD的格式SimpleDateFormat
sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
如果希望分开得到年,月,日SimpleDateFormat
sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

date.getHours()的方法已经过时,编译器会发出警告,不建议这么做。
java.sql.Date没有直接显示hh:mm:ss的方法(除过时方法);
有一种比较麻烦的方法可以实现你的要求。

java.sql.Date b = new java.sql.Date(new java.util.Date().getTime());
java.util.Date c = new java.util.Date(b.getTime());
System.out.println(b+" "+c.toString().split(" ")[3]);
希望对你有帮助

Java里面所有的时间都是按毫秒算的

都有个getTime()得到从以下那个时间到现在的毫秒数
在中国都是从1970/01/01 08:00:00.000开始算

你说的格式输出的话可以用DateFormat

DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String date = format.format(new java.util.Date());

System.out.println(date);

不要.getTime()吧,可以直接通过类型转换或者直接创建java.sql.Date对象,楼主试一下。
一楼的方法不推荐使用

你使用什么往数据库中插值呢
jdbc还是hibernate

jdbc的话你的sql语句中插入datetime 的格式就因该是yyyy-MM-dd hh:mm:ss。
你还得不ava.sql.Date用SimpleDateFormat转成yyyy-MM-dd hh:mm:ss格式的string再付给sql的datetime字段。

hibernate的话直接set po类就是最精确地时间了

Date date=new Date();
int tt=date.getHours();
其他的类似

修改,上面的这种做法不推荐使用
package test;

import java.util.*;

public class Tst {

public static void main(String[] args) {
GregorianCalendar gc=new GregorianCalendar();
String now=gc.get(Calendar.YEAR)+"-"+(gc.get(Calendar.MONTH)+1)+"-"+gc.get(Calendar.DATE)+" "
+gc.get(Calendar.HOUR)+":"+gc.get(Calendar.MINUTE)+":"+gc.get(Calendar.SECOND);
System.out.println(now);

}

}
建议楼主采用拼写字符串的形式,就是向数据库插入一条字符串。


java 中import java.util.List(Ljava.lang.Integer;); 这个是干什么的...
import表示引入某个类或者文件。正确写法应该是import java.util.List;说明程序中要用到List这个类的相关方法,如果没有用到List这个类,当然可以不加这一句。如果用到而不加这个引用,则会出现编译时错误。Ljava.lang.Integer;这个应该是不正确的,除非是自己写的包。如果想引入java.lang.Integer,这个...

java里面import java.util.*;是什么用处
import java.util.*;假如你没这句话的话 如果你要用java.util包中的类Scanner的话你就需要这样使用 java.util.Scanner sc = new java.util.Scanner();而import java.util.*;代表你导入了java.util包中的所有类,,这样的话你使用 Scanner就没那么麻烦了Scanner sc = new Scanner();...

import java.util.Scanner;是什么意思??
就是导入 java.util 包下的 Scanner 类,导入后才能使用它。一.import java.util.Scanner的作用:用来构建Scanner对象。二.import的作用:加载已定义好的类或包 导入支持类(可以是JDK基础类或者自己编写的类),可以供本类调用方法和属性。三 . import导入声明可分为两种导入声明:1>单类型导入单类型...

java中的集合有几种
集合类是放在java.util.*;这个包里。集合类存放的都是对象的引用,而非对象本身,为了说起来方便些,我们称集合中的对象就是指集合中对象的引用(reference)。引用的概念大家不会忘了吧,在前边我们讲数据类型时讲的。集合类型主要有3种:set(集)、list(列表)、map(映射)和Queue(队列)。\/\/队列...

关于java中java.util.Date(急)
这里建议用Calendar来完成,因为Calendar可以对日期进行计算。代码写的比较丑,你再调整调整,俺程序员做的不是很成功。public static String getLastMonthDay(String data){ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");\/\/设定日期 ParsePosition pos = new ParsePosition(0);Calenda...

用java语言编写
1、测试类 import java.util.*;public class test{public static void main(String[] args) { Student student=new Student(); Scanner input=new Scanner(System.in); System.out.println("请输入姓名:"); student.setName(input.next()); System.out.println("请输入学号:"); student.setId...

JAVA使用sc.nextint输入非整数怎么捕获异常?
在Java中,如果您试图使用 sc.nextInt() 输入非整数值,则会引发 InputMismatchException 异常。您可以使用 try-catch 块来处理此异常并向用户显示错误消息。以下是一个示例代码:import java.util.Scanner;import java.util.InputMismatchException;public class InputMismatchExample { public static void ...

java ceiling
java ceiling是什么,让我们一起了解一下?ceiling是将参数Number向上舍入(沿绝对值增大的方向)为最接近的significance的倍数,常用于TreeSet类ceiling()方法的使用。TreeSet类ceiling()方法有哪些?1、ceiling()方法在java.util包中可用。2、ceiling()方法用于返回等于或大于给定元素(ele)的最低元素(...

java.util在哪个jar包
JDK\/JRE自带的 rt.jar ~~~

java中 List 与Set 有什么区别?
Java的集合类都位于java.util包中,Java集合中存放的是对象的引用,而非对象本身。Java集合主要分为三种类型:a.Set(集):集合中的对象不按特定方式排序,并且没有重复对象。它的有些实现类能对集合中的对象按特定方式排序。b.List(列表):集合中的对象按索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检...

武安市13666392151: java 中 java.util.date 与 java.sql.date 有什么区别 -
保路利咽: 一般时候用java.util.Date 和数据库jdbc相关的方法都在java.sql这个包里,接受以java.sql.Date为参数.例如:java.sql.PreparedStatement里的 setDate(int parameterIndex, java.sql.Date x)

武安市13666392151: java.util.Date和java.sql.Date的区别及应用 -
保路利咽: 1、 Java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分 它们都有getTime方法返回毫秒数,自然就可以直接构建.2、 java.util.Date 是 java.sql.Date 的父类 前者是常用的表示时...

武安市13666392151: date在java中用什么类型 -
保路利咽: java语言中的date类介绍及使用 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单介绍一下Date类的使用. 1、使用Date类代表...

武安市13666392151: java.util.Date怎样转换为java.sql.Date -
保路利咽: java.util.Date转换为java.sql.Date的方法主要是利用构造函数,传入date类型参数实例如下:public class ceshi { public static void main(String[] args) throws Exception { java.util.Date curDate = new java.util.Date();//新建一个util类型的date java.sql.Date date = new java.sql.Date(curDate.getTime());//进行日期的转换 System.out.println(date);//将util的日期放在参数里面 } }

武安市13666392151: java.sql.date与java.util.date区别? -
保路利咽: JAVA里提供的日期和时间类,java.sql.Date和java.sql.Time,只会从数据库里读取某部分值,这有时会导致丢失数据.例如一个包含2002/05/22 5:00:57 PM的字段,读取日期时得到的是2002/05/22,而读取时间时得到的是5:00:57 PM. 你需要了...

武安市13666392151: 如何用java语言获得系统当前日期我用的是JDK1.6,除了ja
保路利咽: rrentTimeMillis(),返回的是long型日期时间 2.java.util.Calendar中的方法 Calendar c = tInstance(); long time = tgetTimeInMillis(); // 返回long型日期时间 Date date = tTime(); // 返回Date型日期时间

武安市13666392151: 如何正确地转换成 java.util.Date 通过 JPA 的 Oracle 日期字段 -
保路利咽: 示例如下:package com.zhidao; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class CeShi { public static void main(String[] args) { String dateStr = "2010-10-11 10:00:02"; try { Date d = parseDate...

武安市13666392151: java.util.Date用法 -
保路利咽: Java语言中链表和双向链表的实现 Cron 表达式.java.util.Date 2009-04-15 00:03:04| 分类: Java | 标签: |字号大中小 订阅 .java中的时间操作不外乎这四种情况: 1、获取当前时间 2、获取某...

武安市13666392151: java.sql.Date与java.util.Date的区别 -
保路利咽: sql的DOTE是针对数据库的时间格式, util的DATE是JAVA自己的.你可以看下JAVA的API.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网