【JS】日期对象及时间戳的使用(制作距离指定日期的倒计时)

日期对象(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。


最后

如果这篇文章对你有帮助的话就点个赞吧!

相关推荐
代码or搬砖12 小时前
String字符串
android·java·开发语言
十一.36612 小时前
131-133 定时器的应用
前端·javascript·html
leo__52012 小时前
基于两步成像算法的聚束模式SAR MATLAB实现
开发语言·算法·matlab
Macbethad13 小时前
自动化测试技术报告
开发语言·lua
不会画画的画师13 小时前
Go开发指南:io/ioutil包应用和迁移指南
开发语言·后端·golang
2503_9284115613 小时前
12.22 wxml语法
开发语言·前端·javascript
光影少年14 小时前
Vue2 Diff和Vue 3 Diff实现及底层原理
前端·javascript·vue.js
59803541514 小时前
【java工具类】小数、整数转中文大写
android·java·开发语言
2501_9462243114 小时前
旅行记录应用统计分析 - Cordova & OpenHarmony 混合开发实战
javascript·harmonyos·harvester
傻啦嘿哟14 小时前
隧道代理“请求监控”实战:动态调整采集策略的完整指南
前端·javascript·vue.js