第一部分:
數據提交時的時間格式化:
在接受日期數據的實體類的時間屬性上添加Spring的 @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 注解,則該屬性在接收到時間數據時將其格式化為 pattern 對應的格式
注意:SpringBoot在接受來自前端的時間參數是不會自動將字符串型轉為 Date 型,會報 org.springframework.core.convert.ConversionFailedException 這個異常,異常信息是: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2020-09-24' ,此時使用 @DateTimeFormat(pattern="yyyy-MM-dd") 注解可以實現自動將json數據中的時間字符串轉為 Date 型數據
以上是到日期的案例,如果是要到時分秒,只需要傳相應的時間參數,配置 pattern 相應的格式化時間格式即可
數據在頁面展示時的時間格式化:
1.在展示日期數據的實體類的時間屬性上添加Spring的 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") 注解,則該屬性在轉為json數據時會格式化為 pattern 對應的格式
2.在 application.yaml 文件中格式化時間:
1 spring: 2 mvc: 3 ## mvc格式化時間的格式 4 date-format: yyyy-MM-dd hh:mm:ss 5 jackson: 6 ## json格式化時間的格式 7 date-format: yyyy-MM-dd hh:mm:ss
進行配置之后,前端頁面接受的json數據的時間格式都會是格式化形式的時間格式
注意:在配置文件中配置了mvc格式化時間格式后,在向后端發送數據時也要是格式化類型的時間格式,否則會出錯,原因是springboot在解析json字符串中的時間時會以配置mvc時間格式化形式進行解析,如果格式不匹配就會出錯,類似第三部分的字符串向日期轉化。
使用 @JSONFormat 注解,給 pattern 賦格式化值,本人未曾使用,使用可以參考:https://blog.csdn.net/badguy_gao/article/details/82853895
具體格式化的時間是后端接受還是發送留待后續測試
其他方式以及需要后續深入學習的手記:https://www.imooc.com/article/301447
第二部分:
jsp頁面的時間和后端時間的格式轉換
前端到后端---------------->字符串轉日期(未曾了解和使用)
在controller中加入如下代碼:
1 @InitBinder 2 public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); }
則在前端傳入yyyy-MM-dd格式的字符串時,系統會自動將其轉換為Date類型的對象。這可以實現String->Date的轉換。
后端到前端---------------->日期轉字符串
常用的方式是在jsp頁面引入標簽
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
然后對需要轉換的字段采用fmt標簽格式化,如時間輸入框往往需要對后端傳過來的日期類型進行格式化
1 <input type="text" id = "startDate" name="startDate" value = "<fmt:formatDate value="${searchVO.startDate}" pattern="yyyy-MM-dd" />" >
第三部分:
后端時間的表示方式有多種,long型的毫秒數,Date型的日期,字符串類型的格式。三者之間是如何轉換的
以下內容轉自:https://blog.csdn.net/weixin_38366182/article/details/80735773
1.Long型轉Date型:
1 Date date = new Date(Long timeLong);
2.Date型轉Long型
1 Date date = new Date(); 2 Long timeLong = date.getTime();
3.Date型轉String型
1 Date date = new Date(); 2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 3 String timeStr = sdf.format(date);
4.String型轉Date型
1 String timeStr = "2020-09-29 10:00:00"; 2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 3 try{ 4 // 時間字符串的格式不匹配會報異常 5 Date date = sdf.parse(timeStr); 6 }catch(ParseException e){ 7 e.printStackTrace(); 8 }