javascript date to java.time.LocalDate

2020-06-16 05:11发布

问题:

I'm trying to post json data to a Controller in Java.

This is my controller:

@ResponseBody
    @RequestMapping(value="/{schoolId}", method=RequestMethod.POST)
    public ClassGroupDTO addClassGroup(@RequestBody ClassGroupDTO classgroup, @PathVariable Integer schoolId) {
        return partyService.addClassGroup(classgroup, schoolId);
    }

This it the ClassGroupDTO

    public class ClassGroupDTO extends PartyDTO {
    private PartyDTO titular;
    private SiteDTO site;
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate startDate;
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate endDate;
...
}

I'm using Jackson 2.4.3.

I'm not able to post data when the field startDate or endDate is given. I've tried several formats to post. (I'm using moment.js)

data.startDate = moment().toDate();
data.startDate = moment().toJSON();
data.startDate = moment().format("YYYY/MM/DD");

Everytime I receive a Bad Request error. When I leave out startDate or endDate the data is posted and the controller is triggered.

How to deserialize javascript date to java.time.LocalDate?

回答1:

I got the same problem, solved it using:

var dateString = new Date().toISOString().substring(0,10);

or

var dateString = new Date().toISOString().split("T")[0];

Convert to ISO string ("2015-10-14T09:39:49.942Z"), then keep only first ten characters ie, the date.



回答2:

Since you are using moment there is a simple way to achieve this :

let startDate = moment().toISOString();

This will convert to valid LocalDateTime format