【问题标题】:javascript date to java.time.LocalDatejavascript日期到java.time.LocalDate
【发布时间】:2014-10-07 10:25:58
【问题描述】:

我正在尝试将 json 数据发布到 Java 中的控制器。

这是我的控制器:

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

这就是 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;
...
}

我使用的是 Jackson 2.4.3。

当给定字段 startDate 或 endDate 时,我无法发布数据。 我尝试了几种格式来发布。 (我正在使用 moment.js)

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

每次我收到错误请求错误。 当我省略 startDate 或 endDate 时,将发布数据并触发控制器。

如何将 javascript 日期反序列化为 java.time.LocalDate?

【问题讨论】:

    标签: javascript json deserialization


    【解决方案1】:

    我遇到了同样的问题,使用以下方法解决了:

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

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

    转换为 ISO 字符串 ("2015-10-14T09:39:49.942Z"),然后只保留前十个字符,即日期。

    【讨论】:

    • 由于日期ISO格式如下:“2015-10-14T09:39:49.942Z”,我将使用拆分为:new Date().toISOString().split(" T")[0]
    【解决方案2】:

    由于您正在使用 moment,因此有一种简单的方法可以实现此目的:

    let startDate = moment().toISOString();
    

    这将转换为有效的 LocalDateTime 格式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 2014-06-24
      • 1970-01-01
      • 2015-01-30
      • 2016-02-07
      • 2013-12-03
      相关资源
      最近更新 更多