日期对象(Date对象)是用来表示时间的对象,可以得到当前的系统时间。它可以进行倒计时,时间格式化,日期的相关计算等。
一.Date对象的创建
1. 获得当前时间 new Date()
通过new Date()来实例化一个日期对象得到当前的系统时间:
javascript
const date = new Date()
console.log(date); //Thu Dec 04 2025 17:33:20 GMT+0800 (中国标准时间)
2. 获得指定时间 new Date('2025-12-12') (可用于指定日期前的倒计时)
在new Date()里增加参数: new Date('2025-12-12'),可显示指定日期
javascript
const date = new Date('2025-12-12 12:00:00')
console.log(date); //Fri Dec 12 2025 12:00:00 GMT+0800 (中国标准时间)
二.日期对象方法
日期对象返回的数据我们不能直接使用,所以需要转换为我们日常使用需要的格式。
1. 获取时间的方法
通过 对象.方法 来获取我们想要的时间格式。
需要注意的是:获取月份和星期的范围是从0开始的,,所以在实际使用中需要将月份和星期加1。

javascript
const date = new Date()
console.log(date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+
date.getHours()+':'+date.getMinutes()+':'+date.getSeconds()) //2025-12-4 17:54:24
</script>
2. 写一个显示当前时间的页面
step1:获取dom元素
step2.写一个获取当前时间的函数:使用日期对象方法获取年月日时分秒。(如果时分秒要求位数相同用0补齐需要加一个补齐0逻辑:<10则加0)
step3.使用定时器每隔1秒调用时间函数显示当前时间,用innerHTML更新页面时间(定时器第一秒会产生空白,在定时器前面先写一个日期就可以了)
javascript
<script>
let div = document.querySelector('div') //获取div元素
function showTime() {
const date = new Date() //实例化日期对象
let year = date.getFullYear() //获取年份
let month = date.getMonth() + 1 //获取月份,注意月份是从0开始的,所以要加1
let day = date.getDate() //获取日期
let hours = date.getHours() //获取小时
hours = hours < 10 ? '0' + hours : hours
let minutes = date.getMinutes() //获取分钟
minutes = minutes < 10 ? '0' + minutes : minutes
let seconds = date.getSeconds() //获取秒数
seconds = seconds < 10 ? '0' + seconds : seconds
return `${year}年${month}月${day}日 ${hours}时${minutes}分${seconds}秒`
}
div.innerHTML = showTime() //初始调用一次显示时间
setInterval(function(){
div.innerHTML = showTime()
}, 1000)
</script>
时间效果:

如果对时间的要求不高,只需要固定的格式,我们可以使用其他方法:
**toLocaleString():**返回的日期格式是 年/月/日 时:分:秒
toLocaleDateString(): 返回的日期格式是 年/月/日
**toLocaleTimeString():**返回的日期格式是 时:分:秒
javascript
function showTime() {
const date1 = new Date()
const date2 = new Date()
const date3 = new Date()
return `date1为 ${date1.toLocaleString()}
<br> date2为 ${date2.toLocaleDateString()}
<br> date3为 ${date3.toLocaleTimeString()}`
}
时间效果:

三.时间戳
时间戳是一个毫秒数,每一个时间都有唯一的一个时间戳,如果计算倒计时效果前面的方法无法计算,需要使用到时间戳。
倒计时算法:
- 将来的时间戳-现在的时间戳 = 剩余的时间毫秒数
- 剩余的时间毫秒数 转换为 剩余时间的 年月日时分秒 就是 倒计时时间
1. 获取时间戳的三种方法
1.1 使用getTime() 方法(此方法必须实例化Date对象)
javascript
const date = new Date();//必须实例化
console.log(date.getTime()) //1764845679637
1.2 简写 +new Date()(无需实例化对象)
javascript
console.log(+new Date()) //1764845816351
原本的new Date()产生的是一个日期字符串,在前面加上+之后会将字符串转换为数字型。
+运算符 涉及到JavaScript 隐式类型转换在本篇末尾会详细介绍一下。
1.3 使用Date.now()(无需实例化对象,但是只能得到当前的时间戳,而前面两种可以返回指定时间的时间戳)
javascript
console.log(Date.now()); //1764846457078
2. 将时间戳转换为 天 时 分 秒 的方法 parseInt()
通过时间戳得到的是毫秒,需要转换为秒在计算
转换公式:
- d = parsenInt(总秒数/60/60/24) //计算天数
- h = parsenInt(总秒数/60/60%24) //计算小时
- m = parsenInt(总秒数/60%60) //计算分钟
- s = parsenInt(总秒数%60) //计算秒
3.2 做一个距离指定日期的倒计时
需求:展示到2025年12月31日还有多长时间
step1:用将来的时间戳 - 现在的时间戳
step2:把剩余的时间戳转换为天时分秒
javascript
<script>
const div = document.querySelector('div')
function getTime(){
const endTime = +new Date('2025-12-31')
let nowTime = +new Date()
let timeDiff = endTime - nowTime // 时间差的毫秒数
d = parseInt(timeDiff / 1000 / 60 / 60 / 24)
h = parseInt(timeDiff / 1000 / 60 / 60 % 24)
m = parseInt(timeDiff / 1000 / 60 % 60)
s = parseInt(timeDiff / 1000 % 60)
div.innerHTML = `距离2025年12月31日还有${d}天${h}小时${m}分${s}秒`
}
getTime() //先调用一次显示时间
setInterval(getTime,1000) //每隔一秒刷新一次时间
</script>
四.关于 +运算符的 隐式类型转换
以下面四个代码的输出为例:
javascript
console.log('1'+'1') //11
console.log(1+1) //2
console.log(1+'1') //11
console.log('1'+1) //11
JS 中 + 运算符有两种作用 :算术加法 和字符串拼接:
- 当 + 两边的操作数中,至少有一个是字符串类型时,会触发字符串拼接(其他类型会被隐式转为字符串)
- 当
+两边都是数字类型时,才会触发算术加法。
console.log('1'+'1') 两边都是字符串类型 ,触发字符串拼接,直接把两个'1'连起来,结果是'11'。
console.log(1+1)两边都是数字类型 ,触发算术加法,1+1=2,结果是2。
console.log(1+'1')一边是数字1,一边是字符串'1',触发字符串拼接:数字1会被隐式转为字符串'1' ,再拼接成'11'
除了+,其他算术运算符(-/*//等)会触发数字类型转换 :不管操作数是什么类型,都会先转成数字再运算。比如'1'-1会把'1'转成数字1,结果是0;'a'-1转数字失败,结果是NaN。
最后
如果这篇文章对你有帮助的话就点个赞吧!