2016-12-17 26 views
0

を使用しているとき、私は次の属性が含まれているクラスがあります。間違った時間@JsonFormat(1時間)

@JsonFormat(pattern= "yyyy/MM/dd hh:mm") 
    private java.util.Date begin; 

は今、私は私のRESTサービスへのPOSTを実行します。

最後に
mockMvc.perform(post("/rest/foo") 
       .accept(MediaType.APPLICATION_JSON) 
       .contentType(MediaType.APPLICATION_JSON) 
       .content("{ \"begin\": \"2016/12/04 10:20\" }") 
       .andExpect(status().isOk()) 
       .andReturn(); 

"begin"変数に値があります:Sun Dec 04 11:20:00 CET 2016

何とかJSONからオブジェクトへのマッピングが1時間追加されます。

@JsonFormat(pattern= Constants.TIMESTAMP_FORMAT, timezone = "CET") 
private Date begin; 

しかし、夏に我々はCESTを持っているので、私は、タイムゾーンをハードコーディングすることはできません。

一つの解決策は、使用することです。

すべてのソリューションはありますか?ありがとう!

Btw:当初の日付はjquery datetimepickerに由来します。

+0

ジャクソンのデフォルト、私はあなたのサーバーアプリケーションでUTC時間で純粋な対処をお勧めします、と考えるでしょう純粋にフロントエンドの関心事であるユーザーのタイムゾーンに変換します。したがって、APIはたとえばUnixタイムスタンプまたはISO8601文字列。 – chaoluo

+0

の背後にGMTを使用する – jonrsharpe

答えて

0

コードを国際化して世界中のどのサーバーにも展開する必要がある場合や、CET to CESTなどのタイムゾーンの変更を処理する必要がある場合は、このようなタイムゾーンを使用すると、このアプローチのタイムゾーンで

は、サーバーから取得し、ジャクソン

にfeededさ
<bean name="timeZone" class="java.util.TimeZone" factory-method="getDefault"></bean> 
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
    <property name="objectMapper"> 
     <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> 
      <property name="timeZone" ref="timeZone"></property> 
     </bean> 
    </property> 
</bean> 
一時間CET
+0

ありがとうございます。ゾーンがCETからサーバー上のCESTに変更された場合Webアプリケーションを再起動しなくても動作しますか? – NoobieNoob

+0

サーバー時間はUTCに基づいています。 UTCは、世界が時計と時間を規制する主要な時間基準です。夏時間は観測されません。 https://blog.cdemi.io/time-zones-and-daylight-savings-in-your-infrastructure-and-applications/ –

関連する問題