JavaWEB-(六)Date工具类

本文最后更新于:December 3, 2021 pm

用于解决,当数据库存储的数据类型为 java.sql.Date ,而 java 应用层存储日期类型为 java.util.Date 。当用 java 应用程序插入带有日期的数据到数据库时,需要进行转换,将java中的 java.util.Date 转化为 数据库中的 java.sql.Date。

目录

  • java.util.Date:java语言常规应用层面的日期类型,可以通过字符串创建对应的时间对象。但无法直接通过JDBC插入到数据库。

  • java.sql.Date:不可以通过字符串创建对应的时间对象,只能通过毫秒值创建对象(1970年至今的毫秒值),可以直接通过JDBC插入到数据库。因为 java.sql.Date 是 java.util.Date 的子类。

  • SimpleDateFormat:格式化和解析日期的具体类。允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

1.String 转 java.util.Date

1
2
3
4
5
6
7
8
9
10
11
12
public static void main(String[] args) throws Exception {
//获取系统当前时间
System.out.println("系统当前时间为:" + new java.util.Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //指定日期格式
String da = "2000-07-13";
java.util.Date jud = sdf.parse(da);
System.out.println("String -> java.util.Date : " + jud);
}

//输出
系统当前时间为:Thu Aug 12 23:37:02 CST 2021
String -> java.util.Date : Thu Jul 13 00:00:00 CST 2000

2.java.util.Date 转 String

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) throws Exception {
//获取系统当前时间
System.out.println("系统当前时间为:" + new java.util.Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //指定日期格式
String da = sdf.format(new java.util.Date());
System.out.println("java.util.Date -> String : " + da);
}

//输出
系统当前时间为:Thu Aug 12 23:36:10 CST 2021
java.util.Date -> String : 2021-08-12

3.java.util.Date 转 java.sql.Date

java.sql.Date 不支持字符串转换。只支持毫秒值创建。可以通过 java.util.Date 的getTime()拿到指定日期的毫秒值,再转换为 java.sql.Date 。需要注意的是,它的形式与字符串的形式一样,但它不是字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void main(String[] args) throws Exception {
//获取系统当前时间
System.out.println("系统当前时间为:" + new java.util.Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //指定日期格式
//字符串先转为util.Date再转为sql.Date
String da = "2000-07-13";
java.util.Date jud = sdf.parse(da);
System.out.println("String -> java.util.Date : " + jud);
java.sql.Date jsd = new java.sql.Date(jud.getTime());
System.out.println("java.util.Date -> java.sql.Date : " + jsd);

/*
java.util.Date jt = new java.util.Date();
java.sql.Date jst = new java.sql.Date(jt.getTime());
System.out.println("java.util.Date -> java.sql.Date : " + jst);
*/
//将当前系统时间转换为sql.Date
System.out.println("java.util.Date -> java.sql.Date : " + new java.sql.Date(new java.util.Date().getTime()));
}

//输出
系统当前时间为:Thu Aug 12 23:52:28 CST 2021
String -> java.util.Date : Thu Jul 13 00:00:00 CST 2000
java.util.Date -> java.sql.Date : 2000-07-13
java.util.Date -> java.sql.Date : 2021-08-12

4.DateUtils工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.tothefor.OtherTest;

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
* @Author DragonOne
* @Date 2021/8/12 23:57
*/
public class DateUtils {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//1. String -> java.util.Date
public static java.util.Date strToutil(String str){
try {
return sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
//2. java.util.Date -> String
public static String utilTostr(java.util.Date jud){
return sdf.format(jud);
}
//3. java.util.Date -> java.sql.Date
public static java.sql.Date utilTosql(java.util.Date jud){
return new java.sql.Date(jud.getTime());
}

}


本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/3685811353.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!