时间日期处理函数

/**
 * 日期转化函数
 * @param {*} value 需要转化的日期
 * @param {*} type 控制输出的样式
 * @returns
 */
function getDateTime(value, type) {
  if (value) {
    value = '' + value
    if (value.indexOf('-') > -1) {
      value = value.replace(/-/g, '/')
    }
  }
  const time = value
    ? isNaN(new Date(value))
      ? new Date()
      : new Date(value)
    : new Date()
  const year = time.getFullYear()
  const month = time.getMonth() + 1
  const day = time.getDate()
  const hour = time.getHours()
  const minutes = time.getMinutes()
  const second = time.getSeconds()
  if (type === '1') {
    // 年/月/日 时:分:秒
    return (
      year +
        '/' +
        (month > 9 ? month : '0' + month) +
        '/' +
        (day > 9 ? day : '0' + day) +
        ' ' +
        (hour > 9 ? hour : '0' + hour) +
        ':' +
        (minutes > 9 ? minutes : '0' + minutes) +
        ':' +
        (second > 9 ? second : '0' + second)
    )
  } else if (type === '2') {
    // 年/月/日 时:分
    return (
      year +
        '/' +
        (month > 9 ? month : '0' + month) +
        '/' +
        (day > 9 ? day : '0' + day) +
        ' ' +
        (hour > 9 ? hour : '0' + hour) +
        ':' +
        (minutes > 9 ? minutes : '0' + minutes)
    )
  } else if (type === '3') {
    // 年-月-日
    return (
      year +
        '-' +
        (month > 9 ? month : '0' + month) +
        '-' +
        (day > 9 ? day : '0' + day)
    )
  } else if (type === '4') {
    // 年/月/日 时:分:秒
    return (
      year.toString() +
        (month > 9 ? month : '0' + month) +
        (day > 9 ? day : '0' + day) +
        (hour > 9 ? hour : '0' + hour) +
        (minutes > 9 ? minutes : '0' + minutes) +
        (second > 9 ? second : '0' + second)
    )
  } else if (type === '5') {
    // 年/月/日 时:分:秒
    return (
      year.toString() +
        '年' +
        (month > 9 ? month : '0' + month) +
        '月' +
        (day > 9 ? day : '0' + day) +
        '日'
    )
  } else if (type === '6') {
    // 年/月/日
    return (
      year +
        '/' +
        (month > 9 ? month : '0' + month) +
        '/' +
        (day > 9 ? day : '0' + day)
    )
  }
}

/**
 * 计算天数差的函数
 * @param sDate1:起始日期
 * @param sDate2:结束日期
 * */
function DateDiff(sDate1, sDate2) { 
  // sDate1和sDate2是2006-12-18格式
  var aDate, saDate, oDate1, oDate2, iDays
  aDate = sDate1.split('/')
  oDate1 = Date.parse(new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0])) // 转换为12-18-2006格式
  saDate = sDate2.split('/')
  oDate2 = Date.parse(new Date(saDate[1] + '/' + saDate[2] + '/' + saDate[0]))
  iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24) // 把相差的毫秒数转换为天数
  return iDays
}

/**
 * 获取两个日期时间的时间差。
 * @param {*} direct_time
 * @returns
 */
export function timeDis(start_time, direct_time) {
  // direct_time格式为yyyy-mm-dd hh:mm:ss 指定时间
  var now_time = Date.parse(new Date(start_time))// 当前时间的时间戳
  var end_time = Date.parse(new Date(direct_time))// 指定时间的时间戳
  if (end_time < now_time) {
  //  截止时间已过
    return {
      minutes: 0,
      second: 0
    }
  } else {
    // 计算相差天数
    var time_dis = end_time - now_time
    var days = Math.floor(time_dis / (24 * 3600 * 1000))
    // 计算出小时数
    var leave1 = time_dis % (24 * 3600 * 1000)// 计算天数后剩余的毫秒数
    var hours = Math.floor(leave1 / (3600 * 1000))
    // 计算相差分钟数
    var leave2 = leave1 % (3600 * 1000)// 计算小时数后剩余的毫秒数
    var minutes = Math.floor(leave2 / (60 * 1000))
    // 计算相差秒数
    var leave3 = leave2 % (60 * 1000)// 计算小时数后剩余的毫秒数
    var second = leave3 / 1000
    console.log('12312312', second, minutes)
    return {
      minutes: days * 24 * 60 + hours * 60 + minutes,
      second: second
    }
    // return days + '天' + hours + '小时' + minutes + '分' + second + '秒'
  }
}
/**
 * 获取两个日期时间的年,月,天。
 * @param {*} type: 控制返回,不传返回所有
 * @param {*} d1: 开始日期
 * @param {*} d2: 结束日期
 * @returns
 */
export function dateDiff(d1, d2, type) {
  d1 = new Date(d1.replace(/-/g, '/'))
  d2 = new Date(d2.replace(/-/g, '/'))
  var obj = {}; var M1 = d1.getMonth(); var D1 = d1.getDate(); var M2 = d2.getMonth(); var D2 = d2.getDate()
  obj.Y = d2.getFullYear() - d1.getFullYear() + (M1 * 100 + D1 > M2 * 100 + D2 ? -1 : 0)
  obj.M = (obj.Y > 0 ? obj.Y * 12 : 12) + M2 - M1 + (D1 > D2 ? -1 : 0)
  obj.s = Math.floor((d2 - d1) / 1000)// 差几秒
  obj.m = Math.floor(obj.s / 60)// 差几分钟
  obj.h = Math.floor(obj.m / 60)// 差几小时
  obj.D = Math.floor(obj.h / 24)// 差几天
  if (type === '1') {
    return obj.Y
  } else if (type === '2') {
    return obj.M
  } else if (type === '3') {
    return obj.s
  } else if (type === '4') {
    return obj.m
  } else if (type === '5') {
    return obj.h
  } else if (type === '6') {
    return obj.D
  } else {
    return obj
  }
}

/**
 *获取下一个月的输入日期
 *{param:DateTime} date 输入日期(YYYY-MM-DD)
 *{param:number } monthNum 月数
 */
export function GetNextMonthDay(datea, monthNum) {
  var time1 = datea
  var str = time1
  var date = new Date(str)
  var year = date.getFullYear()// 年
  var month = date.getMonth() + 1 + parseFloat(monthNum)// 月 +6个月  因为js里month从0开始,所以要加1
  if (month > 12) {
    year++
    month -= 12
  }
  if (month < 10) {
    month = '0' + month
  }
  var date2 = new Date(year, month, 0)// 新的年月
  var day1 = date.getDate()
  var day2 = date2.getDate()
  if (day1 > day2) { // 防止+6月后没有31天
    day1 = day2
  }
  str = year + '/' +
            month + '/' +
            day1

  // 最后赋值文本框显示
  return str
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙滩上的一颗石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值