java关于后端怎么去接收Date、LocalDateTime类型的参数

这篇具有很好参考价值的文章主要介绍了java关于后端怎么去接收Date、LocalDateTime类型的参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、接收date类型的参数

Date类型后端入参的格式默认为2019/01/18 11:11:11

1.1、Get方式传参

Get方式传参 是 没有时区的影响的

@JsonFormat的作用: 返回给前端的时间是经过@JsonFormat格式化的时间。

@DateTimeFormat的作用: 前端需要按照@DateTimeForma的格式进行传参

示例:

Date 类型直接作为参数的情况

	/**
     * http://localhost:8080/test1?date=2019-01-18 11:11:11
     */
    @RequestMapping(value = "/test1",method = RequestMethod.GET)
    @ResponseBody
    public void test1(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date){
        System.out.println(date);//Fri Jan 18 11:11:11 CST 2019
    }

Date类型属性的实体类作为参数的情况

public class DateTestVO {
    private Date finishDate;
}

@RequestMapping(value = "/test2",method = RequestMethod.GET)
@ResponseBody
public void test2(DateTestVO vo){
    System.out.println(vo);
    System.out.println(vo.getFinishDate());
    return vo;
}

实体类中没有使用注解的时候

使用的是默认格式的入参:
http://localhost:8080/test2?finishDate=2019/01/18 11:11:11
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019}
Fri Jan 18 11:11:11 CST 2019
返回的是没有经过格式化的时间:
{
    "finishDate": "2019-01-18T03:11:11.000+0000"
}

实体类中使用@JsonFormat注解的时候

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)

使用的是默认格式的入参:
http://localhost:8080/test2?finishDate=2019/01/18 11:11:11
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019}
Fri Jan 18 11:11:11 CST 2019
返回@JsonFormat格式的时间:
{
    "finishDate": "2019-01-18 11:11:11"
}

实体类中使用@JsonFormat和@DateTimeFormat注解的时候

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

使用@DateTimeFormat格式的入参:
http://localhost:8080/test2?finishDate=2019-01-18 11:11:11
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019}
Fri Jan 18 11:11:11 CST 2019
返回@JsonFormat格式的时间:
{
    "finishDate": "2019-01-18 11:11:11"
}

1.2、POST方式传参

有时区的影响

@JsonFormat的作用:

1、后台接收后,没有时区的影响

2、返回给前端是格式化的时间

3、后端的入参按照@JsonFormat的格式传参(并没有使用@DateTimeFormat来格式化后端的入参)

示例:

public class DateTestVO {
    private Date finishDate;
}

@RequestMapping(value = "/test3",method = RequestMethod.POST)
@ResponseBody
public DateTestVO test3(@RequestBody DateTestVO vo){
    System.out.println(vo); 
    System.out.println(vo.getFinishDate());
    return vo;
}

实体类中没有使用注解的时候

入参:
{
    "finishDate": "2019-01-18"
}
打印日志,多了8个小时:
DateTestVO{finishDate=Fri Jan 18 08:00:00 CST 2019}
Fri Jan 18 08:00:00 CST 2019
返回结果,没有多出8个小时、没有格式化的时间:
{
    "finishDate": "2019-01-18T00:00:00.000+0000"
} 
入参:
{
    "finishDate": "2019-01-18T11:11:11"
}
打印日志,多了8个小时:
DateTestVO{finishDate=Fri Jan 18 19:11:11 CST 2019}
Fri Jan 18 19:11:11 CST 2019
返回结果,没有多出8个小时、没有格式化的时间:
{
    "finishDate": "2019-01-18T11:11:11.000+0000"
}

实体类中使用@JsonFormat注解的时候

public class DateTestVO {
    //@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date finishDate;
}

@RequestMapping(value = "/test3",method = RequestMethod.POST)
@ResponseBody
public DateTestVO test3(@RequestBody DateTestVO vo){
    System.out.println(vo); 
    System.out.println(vo.getFinishDate());
    return vo;
}

注解为:
@JsonFormat(pattern = “yyyy-MM-dd”,timezone=“GMT+8”)

入参:
{
    "finishDate": "2019-01-18"
}
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 00:00:00 CST 2019}
Fri Jan 18 00:00:00 CST 2019
返回@JsonFormat格式的时间:
{
    "finishDate": "2019-01-18"
}

注解为:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)


入参:
{
    "finishDate": "2019-01-18 11:11:11"
}
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019}
Fri Jan 18 11:11:11 CST 2019
返回@JsonFormat格式的时间:
{
    "finishDate": "2019-01-18 11:11:11"
}

总结:

为了同时照顾GET、POST方式,@JsonFormat、@DateTimeForma都使用。

2、后端接收LocalDateTime类型的参数

LocalDateTime 在GMT+8 默认格式为 yyyy-MM-ddTHH:mm:ss,如 2021-01-01T10:15:12

2.1、GET方式传参

public class DateTestVO {
    //出参的格式化
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    //入参的格式化
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date finishDate;

    //入参的格式化
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime overDate;
}


    @RequestMapping(value = "/test2",method = RequestMethod.GET)
    @ResponseBody
    public DateTestVO test2(DateTestVO vo){
        System.out.println(vo);
        System.out.println(vo.getFinishDate());
        System.out.println(vo.getOverDate());
        return vo;
    }

overDate使用注解:
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

入参:
http://localhost:8080/test2?finishDate=2019-01-18 11:11:11&overDate=2019-01-18 11:11:11
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11}
Fri Jan 18 11:11:11 CST 2019
2019-01-18T11:11:11
返回结果,overDate是未格式化的时间:
{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-18T11:11:11"
}

overDate使用注解:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

入参:
http://localhost:8080/test2?finishDate=2019-01-18 11:11:11&overDate=2019-01-18 11:11:11
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11}
Fri Jan 18 11:11:11 CST 2019
2019-01-18T11:11:11
返回结果,正常:
{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-18 11:11:11"
}

2.2、POST方式传参

public class DateTestVO {
    //出参的格式化
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    //入参的格式化
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date finishDate;

    private LocalDateTime overDate;
}


   @RequestMapping(value = "/test3",method = RequestMethod.POST)
    @ResponseBody
    public DateTestVO test3(@RequestBody DateTestVO vo){
        System.out.println(vo);
        System.out.println(vo.getFinishDate());
        System.out.println(vo.getOverDate());
        return vo;
    }
入参,overDate里边包含了T{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-18T11:11:11"
}
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11}
Fri Jan 18 11:11:11 CST 2019
2019-01-18T11:11:11
返回结果,overDate包含T{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-18T11:11:11"
}

overDate使用注解:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)

入参:
{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-19 11:11:11"
}
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-19T11:11:11}
Fri Jan 18 11:11:11 CST 2019
2019-01-19T11:11:11
返回结果,正常:
{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-19 11:11:11"
}

overDate使用注解:
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone=“GMT+8”)
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

入参:
{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-18 11:11:11"
}
打印日志,正常:
DateTestVO{finishDate=Fri Jan 18 11:11:11 CST 2019, overDate=2019-01-18T11:11:11}
Fri Jan 18 11:11:11 CST 2019
2019-01-18T11:11:11
返回结果,正常:
{
    "finishDate": "2019-01-18 11:11:11",
    "overDate": "2019-01-18 11:11:11"
}

SpringBoot 中LocalDateTime日期格式化:
https://blog.csdn.net/w851685279/article/details/114685542

有问题,请多多指正!文章来源地址https://www.toymoban.com/news/detail-450387.html

到了这里,关于java关于后端怎么去接收Date、LocalDateTime类型的参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java记录第三方返回类型是image/webp后端如何接收并处理

    Java 调用第三方接口返回类型是 content-type: image/webp 导入的包 第一步 首先编写好请求 String url=\\\'接口地址\\\' //第三方接口 如果是http HttpURLConnection //https请求用下面这个 HttpsURLConnection connection=null; //URL 里面放接口地址 URL uri= new URL(url(接口地址)) //如果请求是GET url+\\\"?请求参数\\\'

    2024年02月15日
    浏览(38)
  • Java中Date、Calendar、LocalDateTime时间戳转换日期

    时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒 ( 北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒 ) 起至现在的总毫秒数,本质是一个long 类型的整数,表示日期对象。 以下时Java中Date、Calendar、LocalDateTime与时间戳转换日期 Date类时间戳转换日期: Calendar类时间戳转换日

    2024年02月11日
    浏览(36)
  • java~Date和LocalDateTime及Instant的使用场景

    在 Java 中, LocalDateTime 、 Date 和 Instant 分别代表了不同的日期时间类型,它们之间有一些区别和适用场景。 Date : java.util.Date 是 Java 早期的日期时间类,它包含了日期和时间信息,但是在设计上存在一些问题,因此并不推荐在新的代码中使用。 Date 类存在线程安全性问题,同

    2024年02月21日
    浏览(38)
  • Java String、Date、Calendar、LocalDate和LocalDateTime互转

    目录 一、String和Date互转 1.1 String时间转为Date 1.2 Date转为String 二、String和Calendar互转 2.1 String时间转为Calendar 2.2 Calendar转为String 三、String和LocalDate(LocalDateTime)互转 3.1 String时间转为LocalDate(LocalDateTime) 3.2 LocalDate(LocalDateTime)转为String 四、Date和Calendar互转 4.1 Date转为Calen

    2024年02月06日
    浏览(39)
  • Java中LocalDateTime/DateTime与Date相互转化(java中时间转化)

    LocalDateTime是JDK1.8出现的新特性,解决线程不安全的问题,但是当前很多的相关插件或者使用较低版本的时候,会依旧使用Date的情况,这个时候就需要两者之间的相互转化 新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。 其次,新AP

    2024年02月15日
    浏览(32)
  • Java后端和前端传递的请求参数的三种类型

    在 HTTP 请求中,常见的请求参数类型有三种:`application/x-www-form-urlencoded`、`multipart/form-data` 和 `application/json`(通常用于 `raw` 类型)。这三种类型主要指的是请求体中的数据格式,其中包括参数的传递方式和编码。 1. **`application/x-www-form-urlencoded`:**    - 这是默认的编码类型

    2024年02月02日
    浏览(34)
  • Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题

    解决办法一:将实体类中的LocalDateTime转为Date类型 解决办法二: 通过注解指定 配置全局 解决办法三: 用阿里的FastJson替换ObjectMapper

    2024年02月12日
    浏览(34)
  • PostMan如何传递Date类型参数

    接口方式: HTTP 方 法: POST 格 式: JSON 通过这种方式传递时间,后台接收到之后需要转为 long 类型,然后转换为date类型 所以接收到值之后,需要转换类型:

    2024年02月11日
    浏览(34)
  • 【常见问题】Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题

    将一个包含LocalDateTime对象的集合进行序列化和反序列化时,可能会遇到以下异常: 这是因为Jackson库在默认情况下不支持LocalDateTime类型的序列化和反序列化。为了解决这个问题,我们需要自定义序列化和反序列化的行为。 1. 引入依赖 2. 设定时间模块 1. 自定义序列化器 首先

    2024年02月02日
    浏览(41)
  • 解决SpringBoot日期序列化问题:[Java 8 date/time type `java.time.LocalDateTime` not supported by default]

    最近项目在通过sql查询数据的时候,报了如下错误: 异常信息:Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module \\\"com.fasterxml.jackson.datatype:jackson-datatype-jsr310\\\"  从异常信息中我们解读到 java8 Jackson库在默认情况下不支持LocalDateTime序列化和反序列化。 于是看了数

    2024年04月25日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包