Spring boot JPA :Date 类型的日期时间
其中一种解决方案:
今天在写微信小程序时,发现显示时间的地方显示了时区,对于用户来说显示 “yyyy-MM-dd HH:mm:ss” 该格式即可,但是微信小程序又要写格式化时间的代码,查找资料的时候发现JPA提供格式化的注释代码如下:
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
完整代码如下:
import com.fasterxml.jackson.annotation.JsonFormat;//这个是导入该注释的包
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
@Entity
@Data
public class Orders {
@JsonSerialize(using = ToStringSerializer.class)
@Id
@Column(name = "order_id")
private Long orderId;
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")//放在需要格式化的字段上,返回的值便从
private Date order_time;
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date receive_time;
}
下单时间没有加该注释,领取时间加上了该注释,可以看见时间进行了格式化
还有一种解决方案:
使用hibernate jpa 注解 @Temporal(XXX)格式化时间日期
有三个格式化模式:
1.只显示日期
@Temporal(TemporalType.DATE)
@Column(name = "applyDate", nullable = false, length = 10)
public Date getApplyDate() {
return applyDate;
}
在页面端取值:2011-04-12
2.只显示时间
@Temporal(TemporalType.TIME)
在页面端取值:22:50:30
3.日期和时间(默认)
@Temporal(TemporalType.TIMESTAMP)
在页面端取值:2011-04-12 22:51:34.0
要注意第三种后面会带.0所以我采用了本文章的第一种方案