JSTL标签fmt:formatDate格式化日期出错

科技资讯 投稿 5900 0 评论

JSTL标签fmt:formatDate格式化日期出错

现象&背景:

异常:

"org.apache.jasper.JasperException: 在 [115] 行处理 [/WEB-INF/jsp/modules/receivedyaccnotify/receive_dy_acc_notify.jsp] 时发生异常"
代码:
<%@ taglib prefix= "fmt" uri= "http://java.sun.com/jsp/jstl/fmt" %>
<td><fmt:formatDate value= "${record.transTime}" pattern= "yyyy-MM-dd HH:mm:ss" type= "date" /></td>

原因:

详解:

【Date and/or time to be formatted.】:需要转换的value得是Date对象类型

 1 <tag>
 2         <description>
 3             Formats a date and/or time using the supplied styles and pattern
 4         </description>
 5         <name>formatDate</name>
 6         <tag-class>org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag</tag-class>
 7         <body-content>empty</body-content>
 8         <attribute>
 9             <description>
10                 Date and/or time to be formatted.
11             </description>
12             <name>value</name>
13             <required>true</required>
14             <rtexprvalue>true</rtexprvalue>
15         </attribute>
16         <attribute>
17             <description>
18                 Specifies whether the time, the date, or both
19                 the time and date components of the given
20                 date are to be formatted.
21             </description>
22             <name>type</name>
23             <required>false</required>
24             <rtexprvalue>true</rtexprvalue>
25         </attribute>
26         <attribute>
27             <description>
28                 Predefined formatting style for dates. Follows
29                 the semantics defined in class
30                 java.text.DateFormat. Applied only
31                 when formatting a date or both a date and
32                 time (i.e. if type is missing or is equal to
33                 "date" or "both"; ignored otherwise.
34             </description>
35             <name>dateStyle</name>
36             <required>false</required>
37             <rtexprvalue>true</rtexprvalue>
38         </attribute>
39         <attribute>
40             <description>
41                 Predefined formatting style for times. Follows
42                 the semantics defined in class
43                 java.text.DateFormat. Applied only
44                 when formatting a time or both a date and
45                 time (i.e. if type is equal to "time" or "both";
46                 ignored otherwise.
47             </description>
48             <name>timeStyle</name>
49             <required>false</required>
50             <rtexprvalue>true</rtexprvalue>
51         </attribute>
52         <attribute>
53             <description>
54                 Custom formatting style for dates and times.
55             </description>
56             <name>pattern</name>
57             <required>false</required>
58             <rtexprvalue>true</rtexprvalue>
59         </attribute>
60         <attribute>
61             <description>
62                 Time zone in which to represent the formatted
63                 time.
64             </description>
65             <name>timeZone</name>
66             <required>false</required>
67             <rtexprvalue>true</rtexprvalue>
68         </attribute>
69         <attribute>
70             <description>
71                 Name of the exported scoped variable which
72                 stores the formatted result as a String.
73             </description>
74             <name>var</name>
75             <required>false</required>
76             <rtexprvalue>false</rtexprvalue>
77         </attribute>
78         <attribute>
79             <description>
80                 Scope of var.
81             </description>
82             <name>scope</name>
83             <required>false</required>
84             <rtexprvalue>false</rtexprvalue>
85         </attribute>
86     </tag>

因为从数据库读取的字段为字符串格式的"20230321165837",通过【fmt:formatDate】转换的时候以致发生异常。

1 <td>
2     <fmt:parseDate value="${record.transTime}" var="trade_Date" pattern="yyyyMMddHHmmss" type="date"/>  //yyyyMMddHHmmss见补充说明※1.
3     <fmt:formatDate value="${trade_Date}" pattern="yyyy-MM-dd HH:mm:ss" type="date"/>                   //yyyy-MM-dd HH:mm:ss见补充说明※2.
4 </td>

 

※1.关于【yyyyyMMddHHmmss】:与转换的日期字符串的格式一致,否则可能回报【value attribute can not be parsed: "20230321165837"】错误。

日期字符串:"20230321165837:

示例2:

转换格式:"yyyy/MM/dd HH:mm:ss"

日期字符串:"2021-06-10T22:04:34"

示例4:

转换格式:"yyyy-MM-dd'T'HH:mm:ssXXX"

※3.关于【fmt:parseDate】的入值与出值的类型说明:

【Name of the exported scoped variable in which the parsing result (of type java.util.Date is stored.】:返回的值是java.util.Date类型

1 <tag> 2 <description> 3 Parses the string representation of a date and/or time 4 </description> 5 <name>parseDate</name> 6 <tag-class>org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag</tag-class> 7 <body-content>JSP</body-content> 8 <attribute> 9 <description> 10 Date string to be parsed. 11 </description> 12 <name>value</name> 13 <required>false</required> 14 <rtexprvalue>true</rtexprvalue> 15 </attribute> 16 <attribute> 17 <description> 18 Specifies whether the date string in the 19 value attribute is supposed to contain a 20 time, a date, or both. 21 </description> 22 <name>type</name> 23 <required>false</required> 24 <rtexprvalue>true</rtexprvalue> 25 </attribute> 26 <attribute> 27 <description> 28 Predefined formatting style for days 29 which determines how the date 30 component of the date string is to be 31 parsed. Applied only when formatting a 32 date or both a date and time (i.e. if type 33 is missing or is equal to "date" or "both"; 34 ignored otherwise. 35 </description> 36 <name>dateStyle</name> 37 <required>false</required> 38 <rtexprvalue>true</rtexprvalue> 39 </attribute> 40 <attribute> 41 <description> 42 Predefined formatting styles for times 43 which determines how the time 44 component in the date string is to be 45 parsed. Applied only when formatting a 46 time or both a date and time (i.e. if type 47 is equal to "time" or "both"; ignored 48 otherwise. 49 </description> 50 <name>timeStyle</name> 51 <required>false</required> 52 <rtexprvalue>true</rtexprvalue> 53 </attribute> 54 <attribute> 55 <description> 56 Custom formatting pattern which 57 determines how the date string is to be 58 parsed. 59 </description> 60 <name>pattern</name> 61 <required>false</required> 62 <rtexprvalue>true</rtexprvalue> 63 </attribute> 64 <attribute> 65 <description> 66 Time zone in which to interpret any time 67 information in the date string. 68 </description> 69 <name>timeZone</name> 70 <required>false</required> 71 <rtexprvalue>true</rtexprvalue> 72 </attribute> 73 <attribute> 74 <description> 75 Locale whose predefined formatting styles 76 for dates and times are to be used during 77 the parse operation, or to which the 78 pattern specified via the pattern 79 attribute (if present is applied. 80 </description> 81 <name>parseLocale</name> 82 <required>false</required> 83 <rtexprvalue>true</rtexprvalue> 84 </attribute> 85 <attribute> 86 <description> 87 Name of the exported scoped variable in 88 which the parsing result (of type 89 java.util.Date is stored. 90 </description> 91 <name>var</name> 92 <required>false</required> 93 <rtexprvalue>false</rtexprvalue> 94 </attribute> 95 <attribute> 96 <description> 97 Scope of var. 98 </description> 99 <name>scope</name> 100 <required>false</required> 101 <rtexprvalue>false</rtexprvalue> 102 </attribute> 103 </tag>

 

编程笔记 » JSTL标签fmt:formatDate格式化日期出错

赞同 (29) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽