时间对象的常用处理

靠谱的时间戳

时间之间的计算,比较麻烦,不能直接加减。最后发现,时间戳真是个好东西,因为时间戳本身就是基于数值,可以随意加减,又可以跟时间对象来回转换。列一下用到的时间对象的方法。

git 源码地址

日期格式转时间戳

parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数。

var d = Date.parse("2018-04-12 14:17:00")

日期格式转到时间对象

new Date('2017-05-06 12:12:22')

时间戳转

var a = new Date(1472048779952)

重置日期格式

export const formatDateObjToDate = function (date) {
  let year = date.getFullYear()
  let month = (date.getMonth() + 1).toString().length === 1 ? '0' + (date.getMonth() + 1).toString() : (date.getMonth() + 1)
  let day = date.getDate().toString().length === 1 ? '0' + date.getDate() : date.getDate()
  let hour = date.getHours().toString().length === 1 ? '0' + date.getHours() : date.getHours()
  let min = date.getMinutes().toString().length === 1 ? '0' + date.getMinutes() : date.getMinutes()
  let sec = date.getSeconds().toString().length === 1 ? '0' + date.getSeconds() : date.getSeconds()
  return year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec
}

计算两个时间之间的天数

export const diffBetweenDates = function (date1, date2) {
  let dateSpan
  let iDays
  date1 = Date.parse(date1)
  date2 = Date.parse(date2)
  dateSpan = date1 - date2
  dateSpan = Math.abs(dateSpan)
  iDays = Math.floor(dateSpan / (24 * 3600 * 1000))
  return iDays
}

计算两个时间段之间是否有交叉

export const dateRangeIntersection = function (dateRange1, dateRange2) {
  let beginTime1 = new Date(dateRange1[0]).getTime()
  let endTime1 = new Date(dateRange1[1]).getTime()
  let beginTime2 = new Date(dateRange2[0]).getTime()
  let endTime2 = new Date(dateRange2[1]).getTime()
  if ((beginTime1 >= endTime2) || (endTime1 <= beginTime2)) { return false } return true } 

随机浏览