web-dev-qa-db-ja.com

Current TimeZoneを@JsonFormatタイムゾーン値に設定します

@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は私がこの問題を解決するのに役立ちます。

事前に感謝、ヴィシュヌ

4
Vishnu K

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);
1
Raju Sharma

列挙型を使用して、使用するタイムゾーンをさらに充実させることができます。列挙を使用したソリューションは、次の列挙クラスの実装です。

    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 )
0
0__1