關於時間格式化和格式轉換


第一部分:

數據提交時的時間格式化:

在接受日期數據的實體類的時間屬性上添加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頁面的時間和后端時間的格式轉換

以下內容轉自:https://blog.csdn.net/w450093854/article/details/80299054?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

 

前端到后端---------------->字符串轉日期(未曾了解和使用)

在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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM