2017-09-02 6 views
0
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = "Asia/Kolkata") 
private Date activationDate; 

Salut les gars,Set TimeZone actuelle à @JsonFormat valeur fuseau horaire

à partir du code Java ci-dessus, je veux mettre en valeur fuseau horaire comme système actuel fuseau horaire en utilisant ci-dessous TimeZone.getDefault(). GetID() - il retourne valeur "Asie/Calcutta"

Mais si je mets ce code au format JSON

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = TimeZone.getDefault().getID()) 

Je reçois erreur comme « La valeur d'annotation attribut JsonFormat.timezone doit être une expression constante »

Pls me aider à résoudre ce problème.

Merci à l'avance, Vishnu

Répondre

0

Vous ne pouvez pas affecter fuseau horaire valeur une dynamique ou une valeur d'exécution. Il doit être constant ou une valeur de temps de compilation et enums trop accepté.

Vous devez donc affecter une constante à timezone. comme ci-dessous.

private static final String MY_TIME_ZONE="Asia/Kolkata"; 
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = MY_TIME_ZONE); 
+0

Salut Raju Sharma, je veux spécifier le fuseau horaire comme fuseau horaire du système, ne devez attribuer une valeur constante comme « Asie/Calcutta ". Merci –

0

Vous pouvez utiliser l'énumération pour éventuellement enrichir les fuseaux horaires que vous utiliseriez. Une solution utilisant l'énumération est l'implémentation de la classe d'énumération suivante.

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; 
     } 
    } 

Ensuite, vous pouvez utiliser vous énumération comme ci-dessous:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy", timezone = TimeZoneEnum.ASIA_KOLKATA) 
+0

Merci Mec, En utilisant le code ci-dessus, toujours im obtenir la même erreur « La valeur d'annotation d'attribut JsonFormat.timezone doit être une expression constante » –