设置当前时区到时区@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必须是一个常量表达式”
请帮助我解决这个问题。
由于提前, 毗湿奴
答
您不能分配时区值动态或运行时的值。它应该是恒定的或编译时间的值,枚举也被接受。
所以你应该给时区分配一个常量。如下所示。
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)
+0
Thanks Dude, 使用上面的代码,仍然会得到相同的错误“注释属性JsonFormat.timezone的值必须是常量表达式” –
嗨拉朱·夏尔马 我想设置时区系统的当前时区,不需要分配恒定值,如“亚洲/加尔各答”。 谢谢 –