js时间库
在JavaScript中,时间戳(timestamp)是一种表示特定时刻距离某个固定时间点的毫秒数。通常这个固定时间点是指1970年1月1日00:00:00(UTC),即Unix纪元。时间戳广泛用于计

js时间库

发布时间:2024-07-01 (2024-07-01)

在JavaScript中,时间戳(timestamp)是一种表示特定时刻距离某个固定时间点的毫秒数。通常这个固定时间点是指1970年1月1日00:00:00(UTC),即Unix纪元。时间戳广泛用于计算机系统中记录和处理日期和时间信息

时间戳

获取当前时间戳

console.log(new Date().getTime()) // 获取时间戳 13位

得到的时间戳是13位的,是毫秒级别的时间戳

将时间戳转换为时间对象

console.log(new Date(1719414979389))

日期对象

格式化日期对象

年月日时分秒

const date = new Date()
console.log(date.getFullYear())
console.log(date.getMonth() + 1) // 月是从0开始的
console.log(date.getDate())
console.log(date.getHours())
console.log(date.getMinutes())
console.log(date.getSeconds())

把时间变成 2024-06-26 15:04:05这样的格式

可以使用字符串的padStart() 方法

function parseDate(dateString){
    let date
    if (dateString){
        date = new Date(dateString)
    }else {
        date = new Date()
    }
    const y = date.getFullYear().toString()
    const M = (date.getMonth() + 1).toString().padStart(2, "0")
    const d = date.getDate().toString().padStart(2, "0")
    const h = date.getHours().toString().padStart(2, "0")
    const m = date.getMinutes().toString().padStart(2, "0")
    const s = date.getSeconds().toString().padStart(2, "0")
    return `${y}-${M}-${d} ${h}:${m}:${s}`
}

console.log(parseDate("2022-12-12 15:04:05"))
console.log(parseDate())

字符串转换为时间对象

new Date("2022-12-12 15:04:05")

日期计算

在一个日期上加减一个时间

调用setXXX方法,重新设置一个时间

const d1 = new Date()
console.log(parseDate(d1))
// 七天前
d1.setDate(d1.getDate() - 7)
// 5小时后
d1.setHours(d1.getHours() + 5)
console.log(parseDate(d1))

一个未来的时间距离现在还剩多久

通过时间相减的时间戳去判断

得到一个毫秒的时间,然后算出秒数、分钟、小时、天

function timeUntil(timeStr) {
  const now = new Date();
  const then = new Date(timeStr);
  const diff = then - now;
 
  // 如果给定时间已经过去,返回过去的时间
  if (diff < 0) {
    return '时间已经过去。';
  }
 
  // 将毫秒转换为秒
  const seconds = Math.floor(diff / 1000);
  const minutes = Math.floor(seconds / 60);
  const hours = Math.floor(minutes / 60);
  const days = Math.floor(hours / 24);
 
  if (days > 0) {
    return `${days} 天 ${hours % 24} 小时 ${minutes % 60} 分钟 ${seconds % 60} 秒`;
  } else if (hours > 0) {
    return `${hours} 小时 ${minutes % 60} 分钟 ${seconds % 60} 秒`;
  } else if (minutes > 0) {
    return `${minutes} 分钟 ${seconds % 60} 秒`;
  } else {
    return `${seconds} 秒`;
  }
}

一个过去的时间距离现在过了多久

也是算时间的差值,直接除以大的年,大于0就直接返回,以此类推

function getDateDiff(dateTimeStamp) {
    // 时间字符串转时间戳
    const timestamp = new Date(dateTimeStamp).getTime();

    const minute = 1000 * 60;
    const hour = minute * 60;
    const day = hour * 24;
    const month = day * 30;
    const year = day * 365;
    const now = new Date().getTime();
    const diffValue = now - timestamp;
    let result;
    if (diffValue < 0) {
        return;
    }
    const yearC = diffValue / year;
    const monthC = diffValue / month;
    const weekC = diffValue / (7 * day);
    const dayC = diffValue / day;
    const hourC = diffValue / hour;
    const minC = diffValue / minute;
    if (yearC >= 1) {
        result = "" + parseInt(yearC) + "年前";
    } else if (monthC >= 1) {
        result = "" + parseInt(monthC) + "月前";
    } else if (weekC >= 1) {
        result = "" + parseInt(weekC) + "周前";
    } else if (dayC >= 1) {
        result = "" + parseInt(dayC) + "天前";
    } else if (hourC >= 1) {
        result = "" + parseInt(hourC) + "小时前";
    } else if (minC >= 1) {
        result = "" + parseInt(minC) + "分钟前";
    } else
        result = "刚刚";
    return result;
}