开发项目的时候碰到个需求,要求某个时间值根据另一个时间值加减天数求得。问了度娘后,找到一种方法。
这种方法还能修正平闰年2月、一个月30天还是31天等让人头痛的问题。
vue中代码如下:
【最近保养日】和【保养周期】都是从数据库里取出来的数据,给它俩绑定change事件处理函数deteChange()。
<el-form :model="form">
<el-form-item label="最近保养日" prop="maintainTime">
<el-date-picker clearable size="small"
v-model="form.maintainTime"
@change="dateChange"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择">
</el-date-picker>
</el-form-item>
<el-form-item label="保养周期" prop="maintainCycle">
<el-input v-model="form.maintainCycle" @change="dateChange"
placeholder="请输入" size="small" type="number" min="0"/>
</el-form-item>
<el-form-item label="下次保养日" prop="nextMaintainTime">
<el-date-picker clearable size="small" readonly
v-model="form.nextMaintainTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择">
</el-date-picker>
</el-form-item>
</el-form>
js中定义的dateChange()函数代码如下:
dateChange(){
let date = new Date(this.form.maintainTime);
date = date.getFullYear() + '-'
+ (date.getMonth()+1) + '-' // 这里加1是因为getMonth()的返回值是为0~11
+ date.getDate() + ' '
+ date.getHours() + ':'
+ date.getMinutes() + ':'
+ date.getSeconds();
date = Date.parse(new Date(date))/1000; // 转换成时间戳,返回值是ms,除1000后转化成秒
date += (86400) * this.form.maintainCycle; // 一天是86400秒
let newDate = new Date(parseInt(date) * 1000); // 把时间戳转换成日期
this.form.nextMaintainTime = newDate.getFullYear() + '-'
+ (newDate.getMonth()+1) + '-'
+ newDate.getDate() + ' '
+ newDate.getHours() + ':'
+ newDate.getMinutes() + ':'
+ newDate.getSeconds();
}
版权声明:本文为yuyao_w原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。