@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = "Asia/Kolkata")
private Date activationDate;
こんにちは、みんな、
上記からJavaコード、以下を使用してタイムゾーン値を現在のシステムのタイムゾーンとして設定したいTimeZone.getDefault()。getID()-それは値を返します- "アジア/コルカタ"
しかし、このコードをjson形式に設定した場合
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = TimeZone.getDefault().getID())
"注釈属性JsonFormat.timezoneの値は定数式でなければなりません"のようなエラーが発生します
Plsは私がこの問題を解決するのに役立ちます。
事前に感謝、ヴィシュヌ
timezone値に動的またはランタイム値を割り当てることはできません。定数またはコンパイル時の値である必要があり、enumsも受け入れられます。
したがって、定数をtimezoneに割り当てる必要があります。以下のように。
private static final String MY_TIME_ZONE="Asia/Kolkata";
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = MY_TIME_ZONE);
列挙型を使用して、使用するタイムゾーンをさらに充実させることができます。列挙を使用したソリューションは、次の列挙クラスの実装です。
package <your package goes here>;
import Java.util.TimeZone;
public enum TimeZoneEnum {
DEFAULT(TimeZone.getDefault()),
ASIA_KOLKATA = (TimeZone.getTimeZone("Africa/Abidjan")),
//other timezones you maybe need
...
private final TimeZone tz;
private TimeZoneEnum(final TimeZone tz)
{
this.tz = tz;
}
public final TimeZone getTimeZone()
{
return tz;
}
}
次に、以下のような列挙を利用できます。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = TimeZoneEnum.ASIA_KOLKATA )