2013-02-14 2 views

答えて

14

日付をStringとして受け取り、それを自分で解析することをお勧めします。ブラウザを介してこの要求をする

@GET 
@Path("/generateInfo") 
@Produces(MediaType.APPLICATION_JSON) 
public String generateInfo(
     @QueryParam("a") String a, 
     @QueryParam("b") String b, 
     @QueryParam("date") String date) { 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    Date dateObj = sdf.parse(date); 

    return "hello world"; 
}

方法です::そうは次のように日付を解析する際に考慮すべき

http://localhost/your_service/generateInfo?date=2013-02-14

もの:

  • SimpleDateFormatが異なる日付の解析と非常に柔軟ですフォーマット。 ISO standard for date文字列は次のとおりです。yyyy-MM-dd

  • Joda Java date APIは特に日付を解析するために、日付/時刻のより完全な実装として受け入れ、そしてsome believe that it is more optimised than Java's native date APIされます。

  • 特に、アプリケーションが異なるタイムゾーンで動作する場合は、エポックタイムスタンプとして日付を指定する方がよい場合があります。ただし、エポックタイムスタンプを受け入れるとき(たとえば、クライアントがエポックタイムスタンプを切り捨てていない場合は、キャッシュミスが多く発生するなど)、HTTPキャッシュの問題に注意する必要があります。書式設定された日付はHTTPキャッシュより簡単であるため、ISO-8601を参照してください。

+1

これはIMHOの推奨方法です。あなたのJSONマーシャーは、おそらく 'Date'クラスをそのフィールドに分解するでしょう。そうすれば、あなたはJSONのオブジェクト' Date'で終わるでしょう。 – Nicholas

0

URLの日付の形式によって異なります。 this questionによれば、コンストラクタDate(String)が処理できる形式であれば動作します。あなたの日付の形式が異なっていて、それを変更できない場合は、pestrellaのソリューションに行き、日付を文字列として受け取って自分で変換する必要があります。

0
@GET 
@Path("/generateInfo") 
@Produces(MediaType.APPLICATION_JSON) 

public String generateInfo(
@QueryParam("a") String a, 
@QueryParam("b") String b, 
@QueryParam("date") String str_date) { 

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 

Date date = df.parse(str_date); 
return "hello world"; 
} 
+4

これは、変数名のわずかな変更だけで、受け入れられた回答の正確なコピーです。 – JJJ

関連する問題