2016-02-24 20 views
5
私は "DD.MM.YYYY" のパターンで私のJava 8のLocalDateTimeオブジェクトをフォーマットする

。フォーマットするライブラリはありますか?私は以下のコードを試みたが、変換例外がある。JSTLのLocalDateTime形式

<fmt:parseDate value="${date}" pattern="yyyy-MM-dd" var="parsedDate" type="date" /> 

JSTLにLocalDateTimeクラス用のタグまたはコンバーターはありますか?

+1

参照:https://github.com/sargue/java-time-jsptags –

答えて

6

実際に私は同じ問題があり、元のJoda Time JSPタグをフォークしてJava 8 java.time JSP tagsを作成しました。

そのライブラリを使用しての例では、このようなものになるだろう:

<javatime:parseLocalDateTime value="${date}" pattern="yyyy-MM-dd" var="parsedDate" /> 

インストール手順については、リポジトリをチェックしてください:https://github.com/sargue/java-time-jsptags

13

14歳のJSTLには存在しません。

あなたの最善の策はカスタムEL機能を作成することです。まず、ユーティリティメソッドを作成します。

package com.example; 

public final class Dates { 
    private Dates() {} 

    public static String formatLocalDateTime(LocalDateTime localDateTime, String pattern) { 
     return localDateTime.format(DateTimeFormatter.ofPattern(pattern)); 
    } 
} 

そして、EL機能などのユーティリティメソッドをあなたの登録特徴/WEB-INF/functions.tldを作成します。

<?xml version="1.0" encoding="UTF-8" ?> 
<taglib 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
    version="2.1"> 

    <tlib-version>1.0</tlib-version> 
    <short-name>Custom_Functions</short-name> 
    <uri>http://example.com/functions</uri> 

    <function> 
     <name>formatLocalDateTime</name> 
     <function-class>com.example.Dates</function-class> 
     <function-signature>java.lang.String formatLocalDateTime(java.time.LocalDateTime, java.lang.String)</function-signature> 
    </function> 
</taglib> 

最後に以下のようにそれを使用する:必要に応じて

<%@taglib uri="http://example.com/functions" prefix="f" %> 

<p>Date is: ${f:formatLocalDateTime(date, 'dd.MM.yyyy')}</p> 

は取る方法を拡張Locale引数。

0

いいえ、それはのLocalDateTimeのために存在していません。

ただし、使用することができます。

<fmt:parseDate value="${ cleanedDateTime }" pattern="yyyy-MM-dd'T'HH:mm" var="parsedDateTime" type="both" /> 
<fmt:formatDate pattern="dd.MM.yyyy HH:mm" value="${ parsedDateTime }" /> 
2

がここに(私は春のMVCを使用しています)私の解決策です。コントローラで

モデル属性としてのLocalDateTimeパターンでのSimpleDateFormatを追加します。

model.addAttribute("localDateTimeFormat", new SimpleDateFormat("yyyy-MM-dd'T'hh:mm")); 

その後のLocalDateTimeを解析し、java.util.Dateを取得するにはJSPでそれを使用します。

${localDateTimeFormat.parse(date)} 

これでJSTLで解析できます。