element日期控件获取起始时间差相差多少月多少天

16 篇文章 1 订阅
3 篇文章 0 订阅

需求:计算房子租金,2023/01/17-2023/01/17算一天,求总的房租费用

<template>
  <div>
    <el-date-picker v-model="value1" type="date" placeholder="选择日期"> </el-date-picker>-
    <el-date-picker v-model="value2" type="date" placeholder="选择日期"> </el-date-picker>
    <div>一共{{ str || 0 }}</div>
    <el-button @click="countDate">计算</el-button>
  </div>
</template>

<script>
import moment from 'moment'
export default {
  data() {
    return {
      str: '',
      value1: '',
      value2: ''
    }
  },
  methods: {
    countDate() {
      if (!this.value2 || !this.value1) {
        this.$message({
          message: '抱歉,时间不可以为空',
          type: 'warning'
        })
      }
      this.countFun()
    },
    countFun() {
      // 计算月份天数
      // 比较日期大小
      // 相差的天数
      let startDay = new Date(this.value2),
        endDay = new Date(this.value1)
      let allday = moment(startDay).diff(moment(endDay), 'day')
      if (allday < 0) {
        startDay = this.value1
        endDay = this.value2
      }
      // 特殊处理:如2022/01/01-2022/01/01为1天
      // 两个日期一样加一天
      startDay = new Date(startDay.setDate(startDay.getDate() + 1))
      // 实际日期相差天数
      allday = moment(startDay).diff(moment(endDay), 'day')
      // 相差的月份
      const month = moment(startDay).diff(moment(endDay), 'month')
      // 当前年月相差有多少天
      const days = moment(moment(startDay).format('yyyy-MM')).diff(moment(moment(endDay).format('yyyy-MM')), 'day')
      // 起始月份总天数
      const endDayAllDay =moment(startDay, 'YYYY-MM').daysInMonth()
      console.log("天数",allday,days,endDayAllDay)
      this.str = `${month}月${allday < days
      ? allday<endDayAllDay?allday:(endDayAllDay - (allday - days))
      : allday - days}天`
    }
  }
}
</script>

总结:moment.js这个插件计算日期真的很有用~工欲善其事,必先利其器~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值