【vue】日期加减天数

开发项目的时候碰到个需求,要求某个时间值根据另一个时间值加减天数求得。问了度娘后,找到一种方法。
下次保养日=最近保养日+保养周期
这种方法还能修正平闰年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版权协议,转载请附上原文出处链接和本声明。