2016-10-13 3 views
0

Я пытаюсь сериализовать объект Date, отправленный как объект Date javascript в запросе ajax. Дата появляется на день раньше, чем отправляется с клиентской стороны. Я понял, что это потому, что Джексон Json устанавливает часовой пояс по умолчанию для UTC.Формат даты в формате Jackson json даже после установки Timezone

@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="mm-dd-yyyy",timezone="CET") 

Я устанавливал часовых поясов для EST, Северной и Южной Америки/Нью-Йорк, и ничего, кажется, чтобы заставить меня получить правильную дату.

ответ

1

Я предполагаю, что это из-за опечатки в формате даты, мы должны изменить его из

@JsonFormat(shape= JsonFormat.Shape.STRING, pattern="mm-dd-yyyy",timezone="CET")

в

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

т.е. ММ против мм.

Ниже отлично работает для меня:

class Model{ 

    @JsonFormat(shape= JsonFormat.Shape.STRING, pattern="MM-dd-yyyy",timezone="CET") 
    private Date date; 

    /** 
    * @return the date 
    */ 
    public Date getDate() { 
     return date; 
    } 

    /** 
    * @param date the date to set 
    */ 
    public void setDate(Date date) { 
     this.date = date; 
    } 
} 

public static void main(String[] args) throws Exception{ 
     Model model = new Model(); 
     model.setDate(new Date()); 

     System.out.println(new ObjectMapper().writeValueAsString(model)); 
    } 
+0

Wow. Я этого даже не заметил. Большое спасибо ! теперь я чувствую себя таким глупым. лол – Imprfectluck

Смежные вопросы