2017-01-31 7 views
0

私はこのように私の日付のカスタム形式を使用しようとしています:カスタム日付デシリアライズ:ジャクソン

public class CustomDateMappingDeserialize extends JsonDeserializer<Date>{ 

    @Override 
    public Date deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext) throws IOException, JsonProcessingException { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
      String date = paramJsonParser.getText(); 
      try { 
       Date formattedDate= format.parse(date); 
       return formattedDate; 
      } catch (ParseException e) { 
       throw new RuntimeException(e); 
      } 

    } 

} 

日は2011年4月8日午前9時00分00秒 であると解析をした後、私は取得していますFormattedDateの同じ日付と例外はありません。

私には何かがありませんか?

おかげ

+0

私には 'Fri Apr 08 00:00:00 CEST 2011'を見せてください。期待通りの半ば。何が問題ですか ? (私はこれが時間パターンなしで正直であることを驚かせています;)) – AxelH

答えて

2

事は、あなたがそれをカットしたい場合は、このような文字列に変換することができるように、オブジェクトの日付は、常に時間を追加することです: `formattedDate`を印刷

String input = paramJsonParser.getText(); 
DateFormat inputFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // this has to be like your input 
Date date = inputFormatter.parse(input); 

DateFormat outputFormatter = new SimpleDateFormat("yyyy-MM-dd"); 
String output = outputFormatter.format(date); // Output : yyyy-MM-dd 
+0

'事はObject Dateが常にTimeを追加することです。SimpleDateFormatを使用して(時間なしで)、これは値を回復しません。 「00:00:00」となります。だから、日付は違うでしょう。しかし、これが尋ねられたものであれば、出力は正しいです。 – AxelH

+0

確かに@AxelH、私は個人的に有用な情報を失うことを好まないが、私は彼がそれを望んでいると思ったので、私はただそれを投稿した。私が使用するソリューションはシリアライザです。私はguiでは見たくない情報を隠しますが、dbにはすべての情報を保持します。彼にとっても面白いことかもしれません。 – Nico

関連する問題