@DateTimeFormat,将字符串转换为Date(java)

时间:2018-10-15 18:48:28

标签: java spring date

我目前遇到这个问题。我有一个Date.toString()。一方面,我想将其作为Date发送到另一侧。该怎么做?

这是我的代码:

public void createEmployee(Employee emp) throws HelicarrierException {
    log.debug(LOG_PREFIX + "[SERVICE]-[CREATE-LOG-GOAL] - [GOAL] - [{}]", emp);
    HashMap<String, String> map = new HashMap<>();
    map.put("nameEmployee", emp.getName());
    map.put("admissionalDate", emp.getAdmissionDate().toString());

    RestTemplate rt = new RestTemplate();

    String url = "http://" + properties.getSktServerEndpoint()
            + ":" + properties.getSktServerPort()
            + properties.getModelEmployee()
            + properties.getCreateEmployee();

    log.debug(LOG_PREFIX + "-[URL]-[{}]", url);
    log.debug(LOG_PREFIX + "-[PARAMETERS]-[{}]", map);

    try {
        rt.postForObject(url, emp, Employee.class, map);
    }

请注意,emp.getAdmissionDate().toString() = Mon Oct 15 00:00:00 BRT 2018

我正在尝试将此参数映射到另一侧,像这样:

@RequestMapping(method = RequestMethod.POST, path = "/create", produces = "application/json")
public ResponseEntity<GenericResponse> create(@RequestParam(value = "nameEmployee") String nameEmployee, @RequestParam(name = "admissionalDate") @DateTimeFormat(pattern="dow mon dd hh:mm:ss zzz yyyy)) Date admissionalDate) 

但是我总是得到错误请求错误。我认为Date映射是错误的,但是我不知道该怎么做。有人知道,如何正确映射此字符串至今?

1 个答案:

答案 0 :(得分:0)

要解决此问题,您有两种选择:

1使用语言环境或DateTime格式化程序

使用DateTime-Formatter发送日期的字符串表示形式,并在另一侧将其解析为日期。

ISO-8601已经提到了一种非常常见的时间戳格式

2发送另一种数据类型

您可以直接发送日期或日期时间


对于您来说,@DateTimeFormat(pattern="dow mon dd hh:mm:ss zzz yyyy)似乎不正确。

您的输出字符串的格式为Mon Oct 15 00:00:00 BRT 2018。 另一方面,此String的适当格式为EEE MMM dd hh:mm:ss zzz yyyy

有关更多信息,请查看DateTimeFormatter-Docs内部。

或者看看another posts