概述
一般情况下我们常用的是util包下的date,sql包下的date只会在sql语句中使用,其中sql.Date是util.Date的子类。
sql.Date和util.Date的转换
//sql.Date 到util.date的转换
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date(date.getTime());
//util.Date到 sql.Date的转换
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
SimpleDateFormat的使用
java.lang.Object
|
+—-java.text.Format
|
+—-java.text.DateFormat
|
+—-java.text.SimpleDateFormat
SimpleDateFormat 类是DateFormat 类的子类,可以将日期以指定的格式输出字符串,也可以把指定的字符串转换成日期。
日期转换成字符串
public static void main(String[] args) {
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4=new SimpleDateFormat(
"一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
Date now=new Date();
System.out.println(myFmt.format(now));
System.out.println(myFmt1.format(now));
System.out.println(myFmt2.format(now));
System.out.println(myFmt3.format(now));
System.out.println(myFmt4.format(now));
System.out.println(now.toGMTString());
System.out.println(now.toLocaleString());
System.out.println(now.toString());
}
结果如下
Connected to the target VM, address: '127.0.0.1:13394', transport: 'socket'
2019年07月22日 19时35分32秒
19/07/22 19:35
2019-07-22 19:35:32
2019年07月22日 19时35分32秒 星期一
一年中的第 203 天 一年中第30个星期 一月中第4个星期 在一天中19时 CST时区
22 Jul 2019 11:35:32 GMT
2019-7-22 19:35:32
Mon Jul 22 19:35:32 CST 2019
Disconnected from the target VM, address: '127.0.0.1:13394', transport: 'socket'
把给定的字符串中的日期提取为Date
public static void main(String[] args) {
String strDate = "2008-10-19 10:11:30.345" ;
// 准备第一个模板,从字符串中提取出日期数字
String pat1 = "yyyy-MM-dd HH:mm:ss.SSS" ;
// 准备第二个模板,将提取后的日期数字变为指定的格式
String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ;
SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ; // 实例化模板对象
SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ; // 实例化模板对象
Date d = null ;
try{
d = sdf1.parse(strDate) ; // 将给定的字符串中的日期提取出来
}catch(Exception e){ // 如果提供的字符串格式有错误,则进行异常处理
e.printStackTrace() ; // 打印异常信息
}
System.out.println(sdf2.format(d)) ; // 将日期变为新的格式
}
结果如下
2008年10月19日 10时11分30秒345毫秒
日期格式模板
需要转换的字符串的格式如下,这只是一些简单的格式