Java前后端时间格式的转化方式

JsonFormat、DateTimeFormat使用

从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题。

其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一致的,而我们的与之对应的便有了另一个注解,@DataTimeFormat便很好的解决了这个问题,接下来记录一下具体的@JsonFormat与DateTimeFormat的使用过程。

@JsonFormat

导入依赖

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.8</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.8</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

在你需要查询出来的时间的数据库字段对应的实体类的属性上添加 @JsonFormat

@Data
@Api("升级日志返回值")
public class UpgradeLogRes {
    @ApiModelProperty("升级日志id")
    private Long id;
    @ApiModelProperty("版本名称")
    private String name;
    @ApiModelProperty("发布日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date postDate;
    @ApiModelProperty("内容日志")
    private String contentLog;
    @ApiModelProperty("发布状态")
    private Integer postStatus;
    @ApiModelProperty("内容日志Url")
    private String contentLogUrl;
}

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

pattern:是你需要转换的时间日期的格式

timezone:是时间设置为东八区,避免时间在转换中有误差

提示:@JsonFormat注解可以在属性的上方,同样可以在属性对应的get方法上,两种方式没有区别

@DateTimeFormat

导入依赖:@DateTimeFormat的使用和@jsonFormat差不多,首先需要引入是spring还有jodatime,spring我就不贴了

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.3</version>
    </dependency>

在controller层我们使用spring mvc 表单自动封装映射对象时,我们在对应的接收前台数据的对象的属性上加@DateTimeFormat

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symstarttime;

@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date symendtime;

我这里就只贴这两个属性了,这里我两个注解都同时使用了,因为我既需要取数据到前台,也需要前台数据传到后台,都需要进行时间格式的转换,可以同时使用

总结一下:

  • 注解@JsonFormat主要是后台到前台的时间格式的转换
  • 注解@DataFormAT主要是前后到后台的时间格式的转换

java前后端Date接收

1.前端传Date对象

将其转为“yyyy-MM-dd HH:mm:ss”的字符串,后台用@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)格式化Date属性

2.后台返回给前端Date

传的是时间戳,用@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”)对其格式化,

timezone是用于调整时区的属性(东八区),不加的话得到的时间会比实际的少8个小时

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;

3.时间比较:

mybaties :

startTime, endTime是经过@DateTimeFormat格式后的Date对象

 <if test="startTime != null">
       and alarm.createTime &gt;= #{startTime}
</if>
<if test="endTime != null">
       and alarm.createTime &lt;= #{endTime}
</if>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 彻底解决Spring mvc中时间的转换和序列化等问题

    痛点 在使用Spring mvc 进行开发时我们经常遇到前端传来的某种格式的时间字符串无法用java8的新特性java.time包下的具体类型参数来直接接收. 我们使用含有java.time封装类型的参数接收也会报反序列化问题,在返回前端带时间类型的同样会出现一些格式化的问题.今天我们来彻底解决他们. 建议 其实最科学的建议统一使用时间戳来代表时间.这个是最完美的,避免了前端浏览器的兼容性问题,同时也避免了其它一些中间件的序列化/反序列化问题.但是用时间表达可能更清晰语义化.两种方式各有千秋,如

  • Spring MVC前后端的数据传输的实现方法

    本篇文章主要介绍了Spring MVC中如何在前后端传输数据.具体内容如下所示: 后端--> 前端 在Spring MVC中这主要通过Model将数据从后端传送到前端,一般的写法为: @RequestMapping(value = "/index", method = RequestMethod.POST) public String index(Model model){ String greeting = "Hello !" model.addAttrib

  • 关于Springboot日期时间格式化处理方式总结

    项目中使用LocalDateTime系列作为DTO中时间的数据类型,但是SpringMVC收到参数后总报错,为了配置全局时间类型转换,尝试了如下处理方式. 注:本文基于Springboot2.x测试,如果无法生效可能是spring版本较低导致的.PS:如果你的Controller中的LocalDate类型的参数啥注解(RequestParam.PathVariable等)都没加,也是会出错的,因为默认情况下,解析这种参数是使用ModelAttributeMethodProcessor进行处理,而

  • SpringBoot日期格式转换之配置全局日期格式转换器的实例详解

    1. SpringBoot设置后台向前台传递Date日期格式 在springboot应用中,@RestController注解的json默认序列化中,日期格式默认为:2020-12-03T15:12:26.000+00:00类型的显示. 在实际显示中,我们需要对其转换成我们需要的显示格式. 1.1 方式1:配置文件修改 配置文件配置application.yml: spring: # 配置日期格式化 jackson: date-format: yyyy-MM-dd HH:mm:ss #时间戳统一

  • Java前后端时间格式的转化方式

    JsonFormat.DateTimeFormat使用 从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题. 其次,另一个问题是,我们在使用WEB服务的时,可能会需要用到,传入时间给后台,比如注册新用户需要填入出生日期等,这个时候前台传递给后台的时间格式同样是不一

  • Django前后端分离csrf token获取方式

    需求 一般Django开发为了保障避免 csrf 的攻击,如果使用Django的模板渲染页面,那么则可以在请求中渲染设置一个csrftoken的cookie数据,但是如果需要前后端分离,不适用Django的模板渲染功能,怎么来动态获取 csrftoken 呢? Django 通过 request 请求获取 csfttoken 的方法 from django.middleware.csrf import get_token def getToken(request): token=get_toke

  • Java前后端分离的在线点餐系统实现详解

    项目功能: 此项目分为两个角色:普通用户和管理员.普通用户有登录注册.浏览商品信息.添加购物车.结算订单.查看个人信息.查看个人订单详情等等功能.管理员有管理所有商品信息.管理所有订单信息.管理所有用户信息.查看收益数据图表等等功能. 应用技术:SpringBoot + VueCli + MySQL + MyBatis + Redis + ElementUI 运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7+ Redis5.0.5 + JDK1.8 + Maven3.6

  • Java前后端分离之权限管理示例分析

    目录 1.前端界面 1.1 按钮 1.2 对话框+树形控件 2.后端操作 2.1 controller层 2.2 serviceImpl层 2.3 结果展示 2.4 查对应的权限菜单(使用中间表) 2.4.1 后端处理(权限回显) 2.4.2 前端处理 2.4.3 后端处理(确定修改权限) 1.前端界面 1.1 按钮 借助elementui中的表格部分 <template slot-scope="scope"> <el-button @click="perm

  • Java SSM实现前后端协议联调详解上篇

    目录 环境准备 列表功能 添加功能 添加功能状态处理 环境准备 项目结构与前文相同: 我们添加新的静态资源: 因为添加了静态资源,SpringMVC会拦截,所有需要在SpringConfig的配置类中将静态资源进行放行: 我们新建SpringMvcSupport @Configuration public class SpringMvcSupport extends WebMvcConfigurationSupport { @Override protected void addResource

  • java利用时间格式生成唯一文件名的方法

    前言 有时候我们需要截图,在要截图时,有人用到了时间格式,但是时间格式中的:在文件名称中是不被允许的字符,所以就会报错,如何生成唯一的时间文件名: 示例代码 package com.demo; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar;

  • Java SSM实现前后端协议联调详解下篇

    目录 前后台协议联调 修改功能 删除功能 完整页面 前后台协议联调 修改功能 需求:完成图书信息的修改功能 找到页面中的编辑按钮,该按钮绑定了@click="handleUpdate(scope.row)" 在method的handleUpdate方法中发送异步请求根据ID查询图书信息 根据后台返回的结果,判断是否查询成功,如果查询成功打开修改面板回显数据,如果失败提示错误信息 修改完成后找到修改面板的确定按钮,该按钮绑定了@click="handleEdit()"

  • 以Java Web项目为例浅谈前后端分离开发模式

    目录 为什么要前后端分离? 什么是前后端分离? 前后端分离的优缺点? 对于你们的团队和产品有没有必要前后端分离? 为什么要前后端分离? 以Java Web项目为例,在传统的开发模式中,前端代码(Html.js.css)写在JSP中,甚至JSP中嵌入Java代码.当用户访问网站时,页面数据也就是Html文档,由Servlet容器将jsp编译成Servlet,然后将jsp中的html,css,js代码输出到浏览器,这个过程需要经过很多步骤,才能响应用户的请求.这个过程非常繁琐,效率低下,直接造成了页

  • Java及数据库对日期进行格式化方式

    目录 Java及数据库对日期进行格式化 示例 Java与数据库时间格式转换 Java及数据库对日期进行格式化 Java对日期进行格式化可使用java.text.SimpleDateFormat 示例 package com.canco.util;  import java.text.SimpleDateFormat; import java.util.Date;  public class Test {       public static void main(String[] args) t

  • java获取Date时间的各种方式汇总

    java获取Date时间的各种方式为大家分享如下 常用的时间获取方式 public class DateUtils { /** * 获取时间戳 * 输出结果:1438692801766 */ @Test public void getTimeStamp() { Date date = new Date(); long times = date.getTime(); System.out.println(times); //第二种方法: new Date().getTime(); } /** *

随机推荐