2011-11-04 22 views
2

我不確定爲什麼下面的代碼有效: str是格式爲2011-11-04 15:54:48.38的日期。它是一個字符串。 當執行以下代碼:在JSP中自動將字符串轉換爲日期

<fmt:parseDate var="xxx" type="date" pattern="y-M-d H:m:s" value="${str}" /> 
xxx: <c:out value="${xxx}"></c:out><br /> 
xxx.time: <c:out value="${xxx.time}"></c:out><br /> 
str.time: <c:out value="${str.time}"></c:out><br /> 
str: <c:out value="${str}"></c:out><br /> 

我得到這個輸出

xxx: Fri Nov 04 15:54:48 GMT 2011 
xxx.time: 1320422088038 
str.time: 1320422088380 
str: 2011-11-04 15:54:48.38 

這怎麼可能? str.time值是否有自動轉換?這些轉換如何工作?

+0

什麼servletcontainer和EL實現?什麼''說?畢竟,我認爲你沒有運行你認爲你正在運行的代碼。這個應該在'$ {str.time}'上拋出'PropertyNotFoundException'。 – BalusC

+0

@BalusC該類是'java.sql.Timestamp'。現在很清楚:)如果你覺得給一個aswere我會標記爲最好的。 – Paolo

回答

0

我認爲你沒有運行你認爲你正在運行的代碼。這個應該肯定會在${str.time}上拋出PropertyNotFoundException。要刪除它,請添加以下行以查明${str}實際上是是。

<c:out value="${str.class.name}" /> 

這顯然是它打印在toString()給定的字符串格式,並具有getTime()方法的類。

0

您正在獲取該輸出,因爲Date對象的「getTime()」返回由Date對象表示的1970年1月1日00:00:00 GMT以來的毫秒數。

編輯:

用途:http://www.epochconverter.com/

,放在秒輸出,你會看到它對應回到你的日期。

+0

這不是問題。 '$ {str}'是一個'String',而不是'Date',但'$ {str.time}'看起來很有效。這就是問題所在。 – BalusC

+0

糟糕 - 我的壞,我應該讀得更好。 – Deco