私たちは、バックエンドからデータを取得するためのパラメータとして日付と時刻を取るリソースベースのサービスを提供しています。Java 8でリクエスト日時をUTC形式に変換するリクエストからzoneIDを取得
データはUTC形式でデータベースに格納され、サーバーはUTCタイムゾーンも設定されます。
クライアントからリクエストを受け取ったときに、日付と時刻をUTC形式の日付と時刻に変換し、それに応じてデータベースにクエリします。
変換を行うために、私は与えられたzoneIdからUTCフォーマットに変換する以下のコードを持っています。
public ZonedDateTime convertDateBetweenTimeZones(LocalDateTime sourceDateTime,String sourceZone,String targetZone){
return sourceDateTime.atZone(ZoneId.of(sourceZone)).withZoneSameInstant(ZoneId.of(targetZone));
}
私は私はそれをデータベースに渡し、それに応じて照会することができると思うzonedDateTimeオブジェクトを取得できたら、私は
ZonedDateTime zonedDateTime=convertDateBetweenTimeZones(LocalDateTime.now(),"Asia/Calcutta","UTC");
、以下のように上記のメソッドを呼び出します。
私の質問では、ソースタイムゾーンのzoneIDとして "Asia/Calcutta"を渡しました。しかし、ソースタイムゾーンには、「America/New_York」または「Asia/Singapore」のいずれかにすることができます。
この場合、クライアントから受け取った要求からどのようにzoneIdを動的に取得して、それに従って適切に変換できるかわかりません。
私のシナリオを処理するためのzoneIdまたは別の方法は、どのように入手できますか?
おかげで、
JavaUser