JS 计算两个时间戳相差年月日时分秒

JavaScript018

JS 计算两个时间戳相差年月日时分秒,第1张

// 计算两个时间戳相差的多少年多少月多少天

calculateDiffTime() {

  let startTime = '1629107469000'  //2021-08-16 17:51

  let endTime = '1976262719000'  //2032-08-16 17:51

  let flag = [1, 3, 5, 7, 8, 10, 12, 4, 6, 9, 11, 2]

  let start = new Date(startTime)

  let end = new Date(endTime)

  let year = end.getFullYear() - start.getFullYear()

  let month = end.getMonth() - start.getMonth()

  let day = end.getDate() - start.getDate()

  if (month <0) {

    year--

    month = end.getMonth() + (12 - start.getMonth())

  }

  if (day <0) {

    month--

    let index = flag.findIndex((temp) =>{

      return temp === start.getMonth() + 1

    })

    let monthLength

    if (index <= 6) {

      monthLength = 31

    } else if (index >6 &&index <= 10) {

      monthLength = 30

    } else {

      monthLength = 28

    }

    day = end.getDate() + (monthLength - start.getDate())

  }

  this.result = `相差${year}年${month}月${day}天`

  console.log(this.result)

}

#  计算两个时间戳相差的多少年多少月多少天多少小时多少分多少秒(另一种写法)

//计算两个时间戳相差的多少年多少月多少天多少小时多少分多少秒

calculateDiffTime (){

  let startTime = '1629107469000'  //2021-08-16 17:51

  let endTime = '1976262719000'  //2032-08-16 17:51

  let runTime = parseInt((endTime - startTime) / 1000)

  var year = Math.floor(runTime / 86400 / 365)

  runTime = runTime % (86400 * 365)

  var month = Math.floor(runTime / 86400 / 30)

  runTime = runTime % (86400 * 30)

  var day = Math.floor(runTime / 86400)

  runTime = runTime % 86400

  var hour = Math.floor(runTime / 3600)

  runTime = runTime % 3600

  var minute = Math.floor(runTime / 60)

  runTime = runTime % 60

  var second = runTime

  console.log(`相差${year}年${month}月${day}天${hour}小时${minute}分${second}秒`)

 return year+','+month+','+day+','+hour+','+minute+','+second

}

var date1=new Date(1980,01,01) //开始时间

var date2=new Date() //结束时间

//计算出相差天数

var days=Math.floor(date3/(24*3600*1000))

//计算出小时数

var leave1=date3%(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 seconds=Math.round(leave3/1000)

你好,

首先来分析一个问题,两个日期是什么格式的?假设是字符串格式:

可能是:2018/04/20,也可能是:2018/04/20 12:00:00

那接下来分情况讨论。

首先看看不含时间部分的日期格式计算:

var aDate = new Date('2018/04/23') // 通过日期字符串,初始化第一个日期对象

var bDate = new Date('2018/04/25') // 同上,初始化第二个日期对象

var aDay = 24 * 60 * 60 * 1000 // 完整一天有24小时,将小时换算成毫秒时间戳

var diffDay = (bDate - aDate) / aDay // 计算间隔天数(注意日期隐式转换)

console.log(diffDay) // 2,23日-25日间隔2天

然后再来看看包含时间部分的日期格式计算:

var aDate = new Date('2018/04/23')

var bDate = new Date('2018/04/25 12:00:00') // 包含时间的日期字符串

var aDay = 24 * 60 * 60 * 1000

var diffDay = (bDate - aDate) / aDay

console.log(diffDay) // 2.5,自然计算的结果

console.log(Math.floor(diffDay)) // 2,根据个人情况向下取整,整数天

console.log(Math.ceil(diffDay)) // 3,根据个人情况向上取整,整数天

希望是你想要的结果,如有疑问请追问。