获取前端时间(String或java.util.Date)存入数据库中(java.sql.Date类型)

获取前端的时间,并传入数据库中

image-20220513141837193

用来处理前端传递过来的时间,并且前端传过来的值“时间”是string类型的,但是我们在把这个输入的时间进行输入后我们在后端进行获取到这个“时间”后,我们就能进行处理,

我们在用simpledateformet,来处理我们前端传来的时间进行处理这样我们就能我们的时间存储到我们的数据库中的date类型数据。

 

而在我们在进行使用SimpleDateFormat对输入的时间是需要进行格式校验,按照定义好的时间解析方式,这样我们才能使用,这个SimpleDateFormat, 在定义后我们在进行输入的时间类型后:

需要进行是有个parse去解析时间,这样我们就能获取到时间类型的一个对象,java.util.Date类型的数据。 但是我们在进行传入到数据后,我们需要把这个java.util.Date 转换成java.sql.Date 数据库中的类型。

这样我们就能把我们在前端获取来数据进行转换后存入数据库中。

1、使用SimpleDateFormat

package com.wolfcode.util;



import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


/**
* 和时间相关的工具类
*/
public class TimeUtil {

   /**
    * 将字符串时间 yyyy-MM-dd转换成java.sql.Date
    */
   public static java.sql.Date strTimeToDate(String strTime){

       //使用一个时间类型的工具
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
       //将当前的字符串时间转成java.util.Date
       try {
           // 这里的Date是java.util.Date
           Date parse_date = sdf.parse(strTime);
           //将转换的java.util.date转成java.sql.Date
           return new java.sql.Date(parse_date.getTime());
      } catch (ParseException e) {
           e.printStackTrace();
      }
       return null;
  }
}

SimpleDateFormat的测试,以及使用java.sql.Date中的方法

进行测试:

package com.qinfeng;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.regex.Pattern;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
public class testRe {

   /**
    * 进行验证Date
    */
   @Test
   public void test(){
       String strTime="2000-02-29";
       //使用一个时间类型的工具
       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
       //将当前的字符串时间转成java.util.Date
       try {
           Date parse_date = sdf.parse(strTime);
           // 在把字符串进行转换成java.util.date后,显示为Tue Feb 29 00:00:00 CST 2000
           System.out.println(parse_date);
           // 在我们把Tue Feb 29 00:00:00 CST 2000 进行获取出来后我们再把它转换成毫秒951753600000
           System.out.println(parse_date.getTime());
           //将转换的java.util.date转成java.sql.Date
           // 我们在获取的毫秒值后,可以把毫秒值转换成任意的Date对象,
           // 这里就可以把毫秒值 直接转换成我们的java.sql.Date 类型
           java.sql.Date date = new java.sql.Date(parse_date.getTime());
           // 我们也可使用java.sql.Date中的一个 valueof 来获取到传来的字符串
           // 也可进行转换成 java.sql.Date 的数据
           java.sql.Date date1 = java.sql.Date.valueOf(strTime);
           System.out.println(date);
           System.out.println(date1);
      } catch (ParseException e) {
           e.printStackTrace();
      }
  }
}

测试结果:

image-20220513211044013


2、固定格式进行直接加入数据库

@Test
public void testString(){
   String strTime="2020-02-28";
   UpdateWrapper<User> wrapper=new UpdateWrapper<>();
   wrapper.eq("uid",3);
   wrapper.set("ubirthday",strTime);
   int update = userMapper.update(null, wrapper);
   if (update==1){
       // 但是我们需要前端的时间进行固定成 yyyy-MM-dd(或者是加上小时:分钟:秒 HH:mm:ss)
       System.out.println("把现在String类型的时间类型直接传入数据库");
  }
}

测试结果

image-20220513211144975

 


3、在前端直接使用type中使用date

由于现在的技术不断的更新迭代,现在我们可以在前端使用一个type中的类型为 date 类型,使用date类型后,我们的前端页面展示的就是给出一个日历,供我们进行选择时间,这样我们在进行前端往后端进行传值时,我们只需使用 date类型来获取的前端传来的时间供我们使用。

我们在进行使用data类型来接收数据时,在后端直接使用java.sql.Date,进行接收。

前端页面:

<html>
<head>
   <title>Title</title>
</head>
<body>
<form action="testTime" method="post">
   <input type="date" name="date">
   <input type="submit" value=test>
</form>
</body>
</html>

在前端的控制器上:

image-20220513214656400

image-20220513214708972

后端数据接收:

image-20220513215930582

 
posted @ 2022-05-13 22:38  孤巷一人i  阅读(3114)  评论(0编辑  收藏  举报