输出JSON字符串不正确。日期错误

时间:2016-05-29 19:43:32

标签: java

我的ObjectMapper转换日期不好。年和月是错误。例如:

{"idtests":null,"title":"sda","date":"3916-06-29T09:27:48"}

我发送2016-05-29:

example

我的代码:

@FXML
private void AddTestAction(){
    if(!title.getText().isEmpty() && date.getValue() != null && minutes.getValue() != null && hours.getValue() != null){
            ObjectMapper mapper = new ObjectMapper();
            Tests obj = new Tests();
            String json = null;

            obj.setTitle(title.getText());
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
            df.setTimeZone(TimeZone.getTimeZone("CET"));         

            Date t = new Date();
            t.setMinutes(Integer.parseInt(minutes.getValue().toString()));
            t.setHours(Integer.parseInt(hours.getValue().toString()));
            t.setYear(Integer.parseInt(date.getValue().toString().substring(0,4)));
            t.setMonth(Integer.parseInt(date.getValue().toString().substring(5,7)));
            t.setDate(Integer.parseInt(date.getValue().toString().substring(8,10)));           
            obj.setDate(t);                   

            try {
                mapper.setDateFormat(df); 
                mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
                json = mapper.writeValueAsString(obj);
            } catch (JsonProcessingException ex) {
                Logger.getLogger(adminController.class.getName()).log(Level.SEVERE, null, ex);
            }
            System.out.print(json);
            if(sendMessages("http://localhost:8080/Server/source/tests/", json)){
                info.setText("Test został dodany");
            }else{
                info.setText("Błąd połączenia");
            }

    }else{
        info.setText("Wprowadź identyfikator");
    }
}

所有提交的数据都是正确的。在我看来,错误必须在配置ObjectMapper但在哪里? 我可以在一年之间减去1900并减去1个月,但这太简单了。

1 个答案:

答案 0 :(得分:0)

请参阅Date#setYear

  

已弃用。 自JDK 1.1版开始,由Calendar.set(Calendar.YEAR,年+ 1900)取代。

     

[...]

     

将此Date对象的年份设置为指定值加上1900.

Date#setMonth

  

已弃用。 自JDK 1.1版开始,由Calendar.set(Calendar.MONTH,int month)取代。

     

[...]

     

month - 0-11之间的月份值。

相关问题