我的ObjectMapper
转换日期不好。年和月是错误。例如:
{"idtests":null,"title":"sda","date":"3916-06-29T09:27:48"}
我发送2016-05-29:
我的代码:
@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个月,但这太简单了。
答案 0 :(得分:0)
请参阅Date#setYear:
已弃用。 自JDK 1.1版开始,由Calendar.set(Calendar.YEAR,年+ 1900)取代。
[...]
将此Date对象的年份设置为指定值加上1900.
已弃用。 自JDK 1.1版开始,由Calendar.set(Calendar.MONTH,int month)取代。
[...]
month
- 0-11之间的月份值。