一、时间的处理(Java和Mybatis)

1、日期格式

在数据库中使用SQL语句测试这两者都可以:

INSERT INTO activity(NAME,start_time,end_time)
VALUES("考试时间","2022/10/29 9:00","2022/10/29 11:00")

INSERT INTO activity(NAME,start_time,end_time)
VALUES("考试时间","2022-10-29 9:00","2022-10-29 11:00")
​

但是后端必须和代码中的格式一致:

注意:
表示日期的时候,一定要使用 yyyy-MM-dd 而不是 YYYY-MM-dd
yyyy和YYYY在一些边界上会有差异。

2、关于时间的处理关键的点

二、MyBatis日期用法小技巧

想在实体类中使用java.util.Date类型,而且还想在数据库中保存时分秒时,可以在xml中修改为:
 

#{xxdate,jdbcType=TIMESTAMP}
 

就是将#{}中的jdbcType属性设置成TIMESTAMP,这样在保存的时候就会将时分秒也包含进去。
 

如果在xml中使用了<resultMap>,为了防止意外,最好将相应的字段也修改:
 

<result column="XXDATE" jdbcType="TIMESTAMP" property="xxdate"/>

三、Mybatis 处理日期格式自动转换

java.lang.String和java.util.Date之间自动转换

Mybatis日期格式自动转换需要用到的两个注解,@JsonFormat,@DateTimeFormat:
@DateTimeFormat(pattern="yyyy-MM-dd")   // 页面写入数据库时格式化   
@JSONField(format="yyyy-MM-dd")   // 数据库导出页面时json格式化

@ApiModelProperty("出发时刻")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
 @ApiModelProperty("日期")
    @JsonFormat(timezone = "GMT+8",pattern="yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date flightDate;
public class User implements Serializable{
    private Integer id;
    private String loginname;
    private String password;
    private Integer status;
    @DateTimeFormat(pattern="yyyy-MM-dd")   // 页面写入数据库时格式化
    @JSONField(format="yyyy-MM-dd")   // 数据库导出页面时json格式化
    private Date createdate;
    private String username;
    // getter And setter
}

更多推荐

MyBatis中日期时间的处理