JDBC以及Spring中如何优雅处理时间类型变量

6 篇文章 0 订阅
6 篇文章 0 订阅

练着练着发现每次要往数据库中存时间变量时,Java那边就不知道怎么优雅地处理时间类型了,因为从表单中接收的值好像都是string类型的,虽说不是没有方法吧,但总感觉每次都特不优雅,所记录总结一下,方便以后优雅地使用~哈哈哈

都直接写成一个方法了,可以直接拿去用

JDBC:

Situation1:DB存Datetime类型

1、表单接收时为string,对应的实体类相关属性类型也是string(但是一般都要求实体类跟数据库中的字段类型相对应)(一般推荐

存数据库时,从表单中获取的时间格式一定要正确,然后将string转为util.Date存入就行(Java中正常不导包的情况下是没有datetime类型的,所以转成util.Date类型就行,一样可以是2023-11-18 19:20:20这样的数据)

String转util.Date:

public void StringToDate(String time) {//time就是你需要转换的时间字符串,格式一定要跟下面匹配!
		//这里的time就是形如2023-11-18 19:20:20,可以与yyyy-MM-dd HH:mm:ss匹配的格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = new Date();
		try {
		            
		       date = simpleDateFormat.parse(time);// 转为Date
		            
		   } catch (ParseException e) {
		            e.printStackTrace();
		   }
		   System.out.println(date); // Sat Nov 18 19:20:20 CST 2023
	}

从数据库中查询的date数据也需要转换一下,才能正确显示到前端。

查询就正常使用getDate就行,然后util.Date转String:

public String DateToString(Date date) {
		// 设置日期格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String format = simpleDateFormat.format(date);
		return format;
	}

2、表单接收时为string,对应的实体类相关属性类型是Date

接收之后转为util.Date类型:

public Date StringToDate(String time) {//time就是你需要转换的时间字符串,格式一定要跟下面匹配!
		//这里的time就是形如2023-11-18 19:20:20,可以与yyyy-MM-dd HH:mm:ss匹配的格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = new Date();
		try {
		            
		       date = simpleDateFormat.parse(time);// 转为Date
		            
		   } catch (ParseException e) {
		            e.printStackTrace();
		   }
		   System.out.println(date); // Sat Nov 18 19:20:20 CST 2023
        return date;
	}

存入数据库的时候一定注意,一般使用的都是util包下面的Date,但是sql是要求使用sql包下面的Date,所以需要注意导包和转换一下

  • 存入当前时间:
public Date saveDate() {
		Date date = new Date(new java.util.Date().getTime());

		// 设置日期格式
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//这里的形式也可以是yyyy-MM-dd HH:mm:ss
		String format = simpleDateFormat.format(date);
		return date;
	}
  • 需要存入自定义时间:思路其实也就是String->util.Date->sql.Date
public java.sql.Date saveCustomDate(String dateString) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		java.sql.Date sqlDate = null;// 这里是sql包中的Date,不要new Date()了,会报错的TT
		 try {
		            
		      java.util.Date date = simpleDateFormat.parse(dateString);//String先转成util下的Date
		      sqlDate = new java.sql.Date(date.getTime());//util.Date再转成sqlDate
		      return sqlDate;
		            
		    } catch (ParseException e) {
		         e.printStackTrace();
		         return null;
		 }
	}

3、表单接收时为string,对应的实体类相关属性类型是Timestamp(最完美

存入数据库时可以直接setTimestamp

  • 存入当前时间:        
Timestamp ts = new Timestamp(System.currentTimeMillis());

        然后直接存setTimestamp(这里写数据库中时间的字段号,ts)就行

  • 存入自定义时间:本质还是string->util.Date->Timestamp

        从表单接收到的string调用一下StringToDate方法(上面有)

public static Timestamp StringToTimestamp(String dateString) {
        //法一:先转util.Date再转timestamp
		Date date = StringToDate("2023-11-11 19:20:20");
		Timestamp ts = new Timestamp(date.getTime());
        //法二:直接使用timestamp的valueOf方法
        //Timestamp timestamp = Timestamp.valueOf("2023-11-11 19:20:20");
		return ts;
	}

        然后在Dao中setTimestamp(这里写数据库中时间的字段号,ts)就行

从数据库中获取时间:

直接使用resultSet的方法getTimestamp();,之后转换为string:

public static String TimestampToString(Timestamp stamp) {
		String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(stamp);
		return dateString;
	}


Stuation2:DB中存Date类型

跟DB中存Datetime类型差不多

Spring:直接注解 @Date  就可以解决所有问题,只要数据库和实体类中都是Date类型

先这么写着,之后再来详细总结hhh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑眼圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>