在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;
}