Java Date 详解

Java Date 详解
1.java.sql.Date与java.util.Date比较
  ① java.sql.Date 只有日期,没有时间
  ② java.util.Date 时间日期都具备
  ③ ResultSet.getDate(columnInt)取得的值是java.sql.Date类型,只有日期,没有时间,就算转换为java.util.Date同样没有时间
  ④ java.sql.Timestamp 时间日期都具备,ResultSet.getTimestamp(columnInt) 时间日期都有
  ⑤ 建表 T1 用以测试,建表语句↓
create table t1(    
id number not null,    
charcol char default 'Y',    
datecol date default sysdate,    
intcol integer default 12);

insert into t1 values(1,'y',sysdate,12);
insert into t1 values(2,'n',sysdate,13);
insert into t1 values(3,null,sysdate,null);
commit;

  ⑥ DateTest 类(测试时间转换)
package com.date;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateTest {
	public static void main(String[] args) {
		Date date = new Date(System.currentTimeMillis());
		 System.out.println(date);
		java.util.Date date2 = new java.util.Date(System.currentTimeMillis());
		 System.out.println(date2);

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String a = sdf.format(date2);
		System.out.println(a);

		Timestamp t = new Timestamp(System.currentTimeMillis());

		String b = sdf.format(t);
		System.out.println(b);

		Calendar c = Calendar.getInstance();

		c.setTime(date);
		System.out.println(c.get(Calendar.MONTH));

		String ss = "1898-12-12 09:08:23";
		Timestamp t2 = Timestamp.valueOf(ss);
		System.out.println(t2);
		java.util.Date d1 = new java.util.Date();
		SimpleDateFormat q = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		System.out.println(q.format(d1));
		java.sql.Date date3=new java.sql.Date(0);
		
		java.util.Date d2=new java.util.Date (date.getTime());
		
		Date sqlDate = new Date(date.getTime());
		java.util.Date d3 = new java.util.Date(sqlDate.getTime());
		System.out.println("utl获得秒数  "+d3.getSeconds());
		DateTest.getSqlDate();
	}
	public static void getSqlDate(){
		Connection con = DateTest.getConnection();
		ResultSet rs = null;
		PreparedStatement ps= null;
		try {
			 ps = con.prepareStatement("select * from t1 t where t.id = 1");
			 rs = ps.executeQuery();
			while (rs.next()) {
				java.sql.Date sqlDate = rs.getDate(3);
				java.util.Date utlDate = rs.getDate(3);
				Timestamp tDate = rs.getTimestamp(3);
				System.out.println("sqlDate  "+sqlDate);
				System.out.println("utlDate  "+utlDate);
				System.out.println("tDate  "+tDate);
				java.util.Date Date2 = new java.util.Date(sqlDate.getTime());
				System.out.println(Date2);
			}
		} catch (Exception e) {
		}finally{
			DateTest.closeJdbc(rs, con, ps);
		}
	}
	public static Connection getConnection(){
		Connection conn = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
			String userName = "slt_plat";
			String passWord = "slt_plat";
			conn = DriverManager.getConnection(url, userName, passWord);
		} catch (Exception e) {
			e.printStackTrace();
		} 
		return conn;
	}
	public static void closeJdbc(ResultSet rs,Connection con,Statement pst){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
			}
		}
		if(pst!=null){
			try {
				pst.close();
			} catch (SQLException e) {
			}
		}
	}

}
2.数据库配置对应Date
  ① @Temporal(TemporalType.DATE)数据库只记录日期
  ② 字段中的Date的类型必须是java.uril.Date,如果是sql.Date时间精度设置无效
  ③ @Enumerated(EnumType.STRING)枚举存入数据库以String存入,EnumType.ORDINAL存入为枚举
  ④ 枚举Titl 类
package com.sf;

public enum Tile {
A,B,C
}
  ⑤ Entity
package com.sf;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity(name="teacher")
@Table(name = "teacher", catalog = "lportal")
public class Teacher {
@Id
/*
 * @GeneratedValue = native auto自动生成;
 */
@GeneratedValue
private int id;
private String name;
private String title;
/*
 * @Enumerated(EnumType.STRING)自定义类型;
 */
@Enumerated(EnumType.ORDINAL)
private Tile tile;
/**
 * @Temporal(value=)value可以默认不写,直接写入值;
 * @Temporal(TemporalType.DATE)数据库只记录日期;
 * java.sql.Date 时间精度只有日期,没有时间,下面的Date如果用这个类,时间精度设置无效;
 */

private Date birthDate;
@Temporal(TemporalType.TIME)
public Date getBirthDate() {
	return birthDate;
}
public void setBirthDate(Date birthDate) {
	this.birthDate = birthDate;
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}

public Tile getTile() {
	return tile;
}
public void setTile(Tile tile) {
	this.tile = tile;
}
public Teacher() {
}
public Teacher(int id,Date date, String name, String title,Tile tile) {
	this.id = id;
	this.name = name;
	this.title = title;
	this.tile = tile;
	this.birthDate = date;
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值