我有websocket
以JSON
字符串的形式接收来自客户端的请求。我收到的其中一个请求包含一个日期。我正在检索String
的日期,但我无法将其更改为LocalDate。这是我收到的JSON
请求{"type":"dataRequest","startDate":"13.05.2018","endDate":"20.05.2018","interval":"01:01:01"}
我正在使用Google's GSON
来解析JSON
。
这是我用Java
代码将日期作为String
并将其解析为LocalDate。
private List<LocalDate> getStartEndDate(String message){
List<LocalDate> dates = new ArrayList();
JsonObject obj = parseJson(message);
JsonPrimitive date = obj.getAsJsonPrimitive("startDate");
String dateString = date.toString();
DateTimeFormatter formater = DateTimeFormatter.ofPattern("dd.MM.yyyy");
dates.add(LocalDate.parse(dateString, formater));
date = obj.getAsJsonPrimitive("endDate");
dateString = date.getAsString();
LocalDate end = LocalDate.parse(dateString, formater);
dates.add(end);
return dates;
}
答案 0 :(得分:0)
您在此处提供的代码类型应该正常运行。您没有在此处提供足够的信息来解决问题。
请参阅此code run live at IdeOne.com。
String input = "20.05.2018" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd.MM.yyyy" );
LocalDate ld = LocalDate.parse( input , f ) ;
ld.toString():2018-05-20
调试此类问题时,请将问题减少到其核心。在这种情况下,这意味着剥离所有JSON业务,专注于使日期解析本身正常工作。
这也是一个更好的Stack Overflow问题。
将日期时间值作为文本进行交换的最佳做法是始终使用标准ISO 8601格式。
java.time 类在解析/生成字符串时默认使用这些标准格式。请参阅上面的示例,YYYY-MM-DD格式。