-
由于vant4没有了vant-datetime-picke组件,只能使用vant-datetime-picker>:组件,这样接收时间组件的常量必须定义为如
"expireTime": []
形式否则picker组件无法弹出。 -
但这样选择时间后expireTime是如[“2023”,“07”,“03”]的形式,无法被后端解析为java.util.Date的形式。
-
前端可参考如下配置:
<van-date-picker
v-model="addTeamData.expireTime"
@confirm="onConfirm"
@cancel="showPicker = false"
type="datetime"
title="请选择过期时间"
:min-date="minDate"
/>
const onConfirm = ({selectedValues}) =>{
initFormData.expireTime = selectedValues.join("-");
showPicker.value = false;
};
添加前端格式化工具
npm i moment
提交方法里记得使用moment工具:
//提交
const onSubmit = async () => {
const postData = {
...addTeamData.value,
status: Number(addTeamData.value.status),
expireTime: moment(initFormData.expireTime).format("YYYY-MM-DD"),
}
后端配置:
在application.yml的spring项进行如下配置:
spring:
application:
jackson:
date-format: yyyy-MM-dd
time-zone: Asia/Shanghai
在需要转换的属性中添加如下注解:
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date expireTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date expireTime;
-
这样前端传来的时间就不是数组形式而是后端可以转化为java.util.Date的形式了。
-
不过还有有待完善的点,这样时间只能精确到天,主要是因为vant4的现有的picker组件只能精确到天,这个问题卡住了好久,不想在这一个小问题上花费太多时间,后来有机会再完善。