인생 디벨로퍼

date 타입 날짜 받기 본문

Project/Mini Project - Rodonin (구인구직)

date 타입 날짜 받기

뫄뫙뫄 2023. 2. 27. 19:35
728x90
반응형

날짜 정보를 date 타입으로 받는다

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ include file="layout/header.jsp" %>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloJSP</title>
</head>
<body>
    <form action="/test" method="get">
        <input type="date" name="createdAt" />
        <button>날짜전송</button>
    </form>
</body>
</html>

<%@ include file="layout/footer.jsp" %>

 

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        return "home";
    }
 }

controller 와 view 를 간단히 만들어 테스트 한다.

1. "get" 데이터 형상을 확인함 2023-02-14 
 - 추측 : String으로는 받을 수 있다. (가능 - 2023-02-08)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloJSP</title>
</head>
<body>
    <form action="/test" method="post">
        <input type="date" name="createdAt" />
        <button>날짜전송</button>
    </form>
</body>
</html>
 @PostMapping("/test")
    public @ResponseBody String hello(String createdAt) {
        return createdAt;
    }

 

string 타입으로 데이터가 확인!

2. Date 타입으로 받아짐. java.sql.Date

package shop.mtcoding.rodongin;

import java.sql.Date;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        return "home";
    }

    @PostMapping("/test")
    public @ResponseBody Date hello(Date createdAt) {
        return createdAt;
    }
}

 

java.sql.Date 타입으로 받아지는지 확인!

3. java.util.Date로는 안받아짐

 

package shop.mtcoding.rodongin;


import java.util.Date;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        return "home";
    }

    @PostMapping("/test")
    public @ResponseBody Date hello(Date createdAt) {
        return createdAt;
    }
}



4. Timestamp로는 못받음. yyyy-mm-dd hh:mm:ss

package shop.mtcoding.rodongin;

import java.sql.Timestamp;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        return "home";
    }

    @PostMapping("/test")
    public @ResponseBody Timestamp hello(Timestamp createdAt) {
        return createdAt;
    }
}



5. LocalDateTime으로도 못받음.

package shop.mtcoding.rodongin;

import java.time.LocalDateTime;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @GetMapping("/home")
    public String home() {
        return "home";
    }

    @PostMapping("/test")
    public @ResponseBody LocalDateTime hello(LocalDateTime createdAt) {
        return createdAt;
    }
}



-----------------------------------------------------------------
설계 (DB가 Timestamp)
    1. String으로 받아서 Timestamp로 변환 -> DB insert

package shop.mtcoding.rodongin;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.junit.jupiter.api.Test;

public class DateTest {

    @Test
    public void date1() {
        String currentTimestampToString = "2022/12/12 00:00:00";

        // String to Timestamp
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        dateFormat.setLenient(false);// 날짜와 시간을 엄격하게 확인
        try {
            Date stringToDate = dateFormat.parse(currentTimestampToString);
            Timestamp stringToTimestamp = new Timestamp(stringToDate.getTime());
            System.out.println(stringToTimestamp);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
 }


    2. Date로 받아서 Timestamp로 변환 -> DB insert


String currentTimestampToString = "2022/12/12 08:03:15";

//  String to Timestamp
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
dateFormat.setLenient(false);// 날짜와 시간을 엄격하게 확인
try {
    Date stringToDate = dateFormat.parse(currentTimestampToString);
    Timestamp stringToTimestamp = new Timestamp(stringToDate.getTime());
    System.out.println(stringToTimestamp);
} catch (ParseException e) {
    e.printStackTrace();
}


설계 (DB가 Date로..)
    1.  java.sql.Date가 DB에 Date타입에 insert가 되는가?

date 타입으로 값을 받아오고
기존 데이터

변경 확인!

728x90
반응형