질문 기록하기: mysql에서datetime 형식 필드가 백엔드에서 읽기와 전방에서 보여집니다

1. 데이터베이스 필드 형식은datetime이고 모델에서:
@Column(name = "createtime", length = 20)
private Date createTime;

2. 데이터를 전방으로 전송하는 두 가지 방법
방법1:
List> list=targetService.findAll();//       list,      
List> newList = new ArrayList>();
for (Map li : list) {
    //String s = li.get("createtime").toString();//  Date      
    //li.put("createtime", s);
    newList.add(task);
}
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().print(JSONArray.fromObject(newList).toString());//      

프런트엔드는 $.post 데이터 요청:
$.post("/url",{key1:value1,key2:value2},function(res){
    console.log(res);//         createtime:{"date":3,"hours":11,"seconds":4,"month":4,"nanos":0,"timezoneOffset":-480,"year":118,"minutes":6,"time":1525316764000,"day":4}
};

비동기적으로 가져오지 않은 상태에서 thymeleaf 템플릿 엔진을 사용하여 데이터를 렌더링합니다.
    //       2018-05-03 15:01:10

$.post 요청이 들어오면 받은 날짜가 하나의 대상(예를 들어 주석)으로 [object,object]으로 표시되기 때문에 지정한 형식인 2018-05-03 15:01:10으로 다시 format해야 합니다.이유: JSONarray.fromObject는 datetime 객체를 json 문자열로 변환합니다.
시도:
Map의 createtime를 문자열, 즉 메소드 설명 부분으로 덮어씁니다.Date 형식 속성을 문자열로 변환합니다. 2018-05-03 15:01:10.0보다 '.0' 이 많습니다. 데이터베이스 조회의datetime 시간이 밀리초까지 정확하기 때문입니다.
방법2:
유사한 방법 하나, $.ajax가 요청한 것은 시간 스탬프: 1525330869000...Why?
3. 요약:
데이터베이스datetime 형식의 데이터를 비동기적으로 가져와서 페이지에 렌더링할 때만 이런 문제가 있습니다.createtime: {"date": 3, "hours": 11, "seconds": 4, "month": 4, "nanos": 0, "timezone Offset": 480, "year": 118, "minutes": 6, "time": 1525316764000, "day": 4} 또는 시간 스탬프를 가져와서 전단 js에서 보여줄 수 있습니다.맵에 있는 키 값을 직접 백엔드로 덮어쓸 수도 있습니다.
이상은 이 문제에 처음 부딪힌 것이고, 이후에 다시 보충에 부딪힌 것이다.

좋은 웹페이지 즐겨찾기