当前位置: 首页 > 知识库问答 >
问题:

使用@DateTimeFormat分析问题的DateTime

蓟和煦
2023-03-14

我在SpringBootApplication中使用@DateTimeFormat时遇到问题。下面是我得到问题的代码片段

package com.example.demo;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;

@RestController
public class DateTimeController {

    @GetMapping("/test/datetime/{id}")
    public String testDateParsing(@PathVariable String id,
                                  @RequestParam("since") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssz") LocalDateTime since) {

        System.out.println("id : " + id);
        System.out.println("since : " + since);

        return "success";
    }
}

代码与EST时区的日期时间配合良好-

http://localhost:8080/test/datetime/1?since=2021-03-02T10:57:43-05:00 
- I am getting SUCCESS response for 2021-03-02T10:57:43-05:00 (EST Time)

代码不工作,日期时间为IST时区-

http://localhost:8080/test/datetime/1?since=2021-03-02T10:57:43+05:30 
- I am getting ERROR response for 2021-03-02T10:57:43+05:30 (IST Time)

异常-"无法将'java.lang.String'类型的值转换为所需类型'java.time.LocalDateTime';嵌套异常org.springframework.core.convert.ConversionFailedException:无法将值'2021-03-02T10:57:43 05:30'从类型[java.lang.String]转换为类型[@org.springframework.web.bind.annotation.Request estParam@org.springframework.format.annotation.DateTimeFormatjava.time.LocalDateTime];嵌套异常java.lang.IllegalArgumentException:值解析尝试失败[2021-03-02T10:57:43 05:30]"

知道如何解决这个问题吗?

共有2个答案

鲁华皓
2023-03-14

URL中的加号(“”)将自动转换为空格字符(“”)。这可以通过URL将空格字符编码为“+”来解决。

http://localhost:8080/test/datetime/1?since=2021-03-02T10:57:43%2B05:30

仔细阅读异常消息可以确认这个问题,异常消息显示解析文本中有空格,而不是加号:

Parse attempt failed for value [2021-03-02T10:57:43 05:30]"

加号到空格的这种转换是URL中相当常见的转换,Spring在默认情况下会这样做。

姬乐池
2023-03-14

问题是登录您的请求URL。这是一个保留标志。

您必须对查询参数进行URL编码。然后如下所示:

GET http://localhost:8080/test/datetime/1?since=2021-03-02T10:57:43%2B05:30
 类似资料:
  • 我是YouTube分析API的新手,有几个问题: > 为了检索Analytics报告,我必须为“id”参数指定通道ID。如何找到经过OAuth身份验证的用户的通道ID?我在示例应用程序中看到我可以调用Data API(V3)中的Channels.list方法并使用“mine=true”参数。这是否保证返回单个通道?如果没有,我如何知道哪个通道是正确的?查找用户通道ID的推荐方法是什么? 一旦我有了

  • 我使用分页与codeigniter,但每次我得到只有一个结果添加时,我改变页面。 让我们明确一点,在中,我有15个不同的结果,当我进入时,我会得到相同的结果,最后会有额外的新结果,当我进入时,我会得到与相同的结果,但最后会有额外的一个新结果。。。 我的代码(控制器): 我的看法是:

  • 使用指南 - 分析云 - 分析云常见问题 Q: 分析云版本中的事件数据量是什么? A: 事件数据量是指该站点每天记录的事件日志的总量,每次分析请求的数据量如超出该上限会进行抽样。 Q: 全埋点数据可支持事件回溯1个月是什么意思? A: 全埋点功能会自动记录访客的元素点击事件,圈选事件后,可基于全埋点数据进行一个月的回溯,防止错埋、漏埋等情况。 Q: 购买分析云后,基础统计具体哪些资源提升了? A:

  • 我试图使用restTemplate.exchange()方法解析来自服务的JSON响应。但由于解析错误而失败。 Java代码 JSON对象Java类 错误: 2018-07-12 15:40:00.876错误6044--[nio-8080-exec-1]O.A.C.C.C.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的

  • 本文向大家介绍C++变位词问题分析,包括了C++变位词问题分析的使用技巧和注意事项,需要的朋友参考一下 在《编程珠玑》一书的第二章提到了一个变位词问题,变位词指的是一个单词可以通过改变其他单词中字母的顺序来得到,也叫做兄弟单词,如army->mary。由变位词可以引申出几个算法问题,包括字符串包含问题,比较两个字符串是否是变位词,以及找出字典中变位词集合的问题。 一、字符串包含问题 (1) 问题描

  • 本文向大家介绍getJSON跨域SyntaxError问题分析,包括了getJSON跨域SyntaxError问题分析的使用技巧和注意事项,需要的朋友参考一下 昨天写一个功能:点击手机验证的同时获取json端的数据。 javascript代码如下: user.php代码如下: 相应如下: 问题出来了: 在火狐浏览器中: SyntaxError: missing ; before statement