js实现倒计时及时间对象

下面是详细讲解“JS实现倒计时及时间对象”的完整攻略。

时间对象

在 JavaScript 中,可以使用内置的时间对象 Date 来处理日期和时间。所以,我们可以借助 Date 对象来实现倒计时。

获取当前时间

首先,我们需要获取当前的时间。使用 new Date() 可以获取当前的日期和时间。

let now = new Date(); // 获取当前时间
console.log(now); // 输出当前时间

获取指定时间

除了获取当前时间,还可以得到指定的时间。使用 new Date(year, month, date, hours, minutes, seconds, milliseconds) 可以创建一个日期时间对象,其中含有所指定的日期和时间值。

  • year:年份(四位数)
  • month:月份(从 0 开始计数)
  • date:日(一个月中的某一天)
  • hours:小时(0 - 23)
  • minutes:分钟(0 - 59)
  • seconds:秒(0 - 59)
  • milliseconds:毫秒(0 - 999)
let target = new Date(2022, 11, 31); // 指定 2022 年 12 月 31 日
console.log(target); // 输出指定时间

使用 getDate()getMonth()getFullYear()getHours()getMinutes()getSeconds() 可以获取 Date 对象中的具体信息。

console.log(target.getDate()); // 输出指定时间的日
console.log(target.getMonth()); // 输出指定时间的月份
console.log(target.getFullYear()); // 输出指定时间的年份
console.log(target.getHours()); // 输出指定时间的小时
console.log(target.getMinutes()); // 输出指定时间的分钟
console.log(target.getSeconds()); // 输出指定时间的秒钟

倒计时

了解了时间对象的基本操作后,接下来我们就可以通过比较当前时间和指定时间的差值来实现倒计时了。

首先,获取指定的时间。然后,在每隔一秒钟中,获取一次当前的时间,并将其与指定时间相减。

let target = new Date(2022, 11, 31); // 指定 2022 年 12 月 31 日
let now = new Date(); // 获取当前时间
let leftTime = target - now; // 相差时间的毫秒数
console.log(leftTime); // 输出相差毫秒数

这样,我们就得到了当前时间和指定时间的毫秒级的时间差值,接着将其转换为页面上显示的形式。

秒数转换

将毫秒数转换为需要的形式,首先需要将毫秒数转换为秒数。然后将秒数转换为 小时:分钟:秒 的形式。

let leftTime = 123456789;
let totalSeconds = parseInt(leftTime / 1000); // 将毫秒数转换为秒数
let hour = parseInt(totalSeconds / 3600); // 小时数
let minute = parseInt(totalSeconds % 3600 / 60); // 分钟数
let second = parseInt(totalSeconds % 60); // 秒数
console.log(hour, minute, second); // 输出时、分、秒

时间格式化

得到时、分、秒后,将它们组合成我们需要的格式,即 hh:mm:ss

使用字符串模板可以很方便的实现时间格式化。

let timeStr = `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}`;
console.log(timeStr); // 输出格式化后的时间

完整示例

下面是一个完整的实现倒计时的示例:

<!DOCTYPE html>
<html>
<head>
    <title>倒计时</title>
    <style>
        .countdown {
            font-size: 24px;
            font-weight: bold;
            color: red;
        }
    </style>
</head>
<body>
    <div class="countdown"></div>
    <script type="text/javascript">
        let countdownDOM = document.querySelector('.countdown');
        let target = new Date(2022, 11, 31); // 指定 2022 年 12 月 31 日

        setInterval(() => {
            let now = new Date(); // 获取当前时间
            let leftTime = target - now; // 相差时间的毫秒数

            let totalSeconds = parseInt(leftTime / 1000); // 将毫秒数转换为秒数
            let hour = parseInt(totalSeconds / 3600); // 小时数
            let minute = parseInt(totalSeconds % 3600 / 60); // 分钟数
            let second = parseInt(totalSeconds % 60); // 秒数

            let timeStr = `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}`;
            countdownDOM.innerHTML = timeStr;
        }, 1000);
    </script>
</body>
</html>

在这个示例中,我们在页面上显示了倒计时,使用了定时器来每秒更新一次,同时也实现了时间格式化,使得它更加易于阅读。

示例说明

这里再给出两个倒计时的示例。

示例一

要求倒计时 2 分钟,然后把 h1 标签内的文字改为 “Time is up”。

<!DOCTYPE html>
<html>
<head>
    <title>倒计时</title>
    <style>
        h1 {
            font-size: 36px;
            font-weight: bold;
            color: red;
        }
    </style>
</head>
<body>
    <h1>倒计时</h1>
    <script type="text/javascript">
        let countdownDOM = document.querySelector('h1');
        let target = new Date(); // 获取当前时间
        target.setMinutes(target.getMinutes() + 2); // 2 分钟后

        let countdownTimer = setInterval(() => {
            let now = new Date(); // 获取当前时间
            let leftTime = target - now; // 相差时间的毫秒数

            if (leftTime <= 0) { // 倒计时结束
                clearInterval(countdownTimer);
                countdownDOM.innerHTML = 'Time is up';
                return;
            }

            let totalSeconds = parseInt(leftTime / 1000); // 将毫秒数转换为秒数
            let minute = parseInt(totalSeconds / 60); // 分钟数
            let second = parseInt(totalSeconds % 60); // 秒数

            let timeStr = `${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}`;
            countdownDOM.innerHTML = timeStr;
        }, 1000);
    </script>
</body>
</html>

示例二

要求倒计时 1 小时 30 分钟,然后在命令行输出 “Time is up”。

let target = new Date(); // 获取当前时间
target.setHours(target.getHours() + 1); // 1 小时后
target.setMinutes(target.getMinutes() + 30); // 再加 30 分钟

let countdownTimer = setInterval(() => {
    let now = new Date(); // 获取当前时间
    let leftTime = target - now; // 相差时间的毫秒数

    if (leftTime <= 0) { // 倒计时结束
        clearInterval(countdownTimer);
        console.log('Time is up');
        return;
    }

    let totalSeconds = parseInt(leftTime / 1000); // 将毫秒数转换为秒数
    let hour = parseInt(totalSeconds / 3600); // 小时数
    let minute = parseInt(totalSeconds % 3600 / 60); // 分钟数
    let second = parseInt(totalSeconds % 60); // 秒数

    let timeStr = `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:${second.toString().padStart(2, '0')}`;
    console.log(timeStr);
}, 1000);

以上就是实现倒计时及时间对象的完整攻略,希望可以帮助大家更好的了解和使用时间操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现倒计时及时间对象 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript实现读取与输出XML文件数据的方法示例

    JavaScript可以通过浏览器的XMLHttprequest对象来读取和处理XML文件,然后将数据进行输出和展示。下面是实现读取和输出XML文件数据的方法示例,共分为以下几个步骤: 1.创建XMLHttprequest对象 要读取XML文件数据,首先需要创建XMLHttprequest对象,并将其作为变量存储在JavaScript中。 var xmlht…

    JavaScript 2023年5月27日
    00
  • jquery实现时间选择器

    下面是关于”jquery实现时间选择器”的完整攻略。 1.准备工作 在使用jquery实现时间选择器之前,我们需要先准备好jquery库和相关的CSS样式文件。可以在jquery官方网站上下载相应的文件,也可以使用CDN的方式引入。 2.基本结构 时间选择器需要一个文本框作为输入框,支持用户输入时间。同时,需要一个按钮来触发时间选择器的弹出和隐藏。 HTML…

    JavaScript 2023年5月27日
    00
  • 浅谈关于JavaScript的语言特性分析

    我来详细讲解 “浅谈关于JavaScript的语言特性分析” 的完整攻略。 步骤1:初步介绍 JavaScript 是一种弱类型的、动态的脚本语言,常用于编写网页的交互效果和动态功能。JavaScript 有其独特的语言特性,包括但不限于以下几点: 弱类型:JavaScript 变量的类型不需要在声明时指定,可以在运行时动态改变,在对类型不那么敏感的应用场景…

    JavaScript 2023年5月18日
    00
  • JavaScript 微任务和宏任务讲解

    JavaScript 微任务和宏任务讲解 在 JavaScript 中,异步任务主要分为微任务和宏任务两种。宏任务可以理解为宏大的任务,就是需要花费比较长时间才能完成的任务,比如定时器、ajax 请求、DOM 事件等。微任务可以理解为小任务,比较轻量,基本上可以在当前任务完成后马上被执行,比如 Promise。 在执行异步任务时,引擎会将宏任务放入宏任务队列…

    JavaScript 2023年5月28日
    00
  • JS 自动完成 AutoComplete(Ajax 查询)

    下面我将详细讲解 JS 自动完成 AutoComplete(Ajax 查询) 的完整攻略。 什么是 JS 自动完成 AutoComplete? JS 自动完成 AutoComplete 是前端开发中常用的一种交互技术,它可以实现输入框中的关键字联想提示和自动完成。通常情况下,我们通过 Ajax 查询服务器获取关键字列表,然后将返回的结果展示在输入框下面,用户…

    JavaScript 2023年6月11日
    00
  • JS实现水平移动与垂直移动动画

    JS实现水平移动与垂直移动动画的攻略步骤如下: 步骤一:获取需操作的元素 首先,我们需要获取需要操作的元素,可以通过以下方式获取: const elem = document.querySelector(‘#target’); 其中,#target是需要操作的元素的id。 步骤二:水平移动动画 接下来,我们开始实现水平移动动画,具体步骤如下: 1. 定义初始…

    JavaScript 2023年6月10日
    00
  • web性能优化之javascript性能调优

    Web性能优化是Web开发中非常重要的一环,其中JavaScript性能调优更是至关重要。下面是JavaScript性能调优的完整攻略: 1. 代码优化 1.1 压缩和混淆 代码的压缩和混淆可以有效减小资源文件的大小,提高页面加载速度。常用的工具有UglifyJS,Google Closure Compiler等。 1.2 避免不必要的全局变量 全局变量会影…

    JavaScript 2023年5月28日
    00
  • Javascript中引用类型传递的知识点小结

    JavaScript 中,基本类型的值(number、string、boolean、null、undefined)是按值传递的,也就是说改变一个变量的值不会影响另一个变量的值。而引用类型的值(object、array、function)则是按引用传递的,也就是说改变一个变量的值会同时改变另一个变量的值。接下来对引用类型传递的知识点进行详细讲解: 引用类型传递…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部