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日

相关文章

  • jQuery插件form-validation-engine正则表达式操作示例

    以下是对jQuery插件form-validation-engine正则表达式操作的详细攻略。 简介 form-validation-engine是一个jQuery表单验证插件,支持很多种类型的验证,并且可以自定义验证规则。其中,正则表达式是一种非常常用且强大的验证方式。 在本篇攻略中,我们将通过两个示例说明如何使用正则表达式在form-validation…

    JavaScript 2023年6月10日
    00
  • document.getElementById介绍

    当我们需要获取HTML页面中的元素并且对其进行操作时,就需要用到document.getElementById方法。这个方法可以通过指定元素的id属性值,从HTML文档中获取对应的元素节点对象,并返回该节点对象。接下来我会详细讲解document.getElementById的用法和注意事项。 语法 document.getElementById()的语法如…

    JavaScript 2023年6月10日
    00
  • JavaScript 学习笔记(十三)Dom创建表格

    以下是对“JavaScript 学习笔记(十三)Dom创建表格”的详细讲解: 什么是DOM DOM(Document Object Model)是一种表示文档结构的方式,它将整个文档看做是一个文档树形结构,树形结构中的每个节点都一个文档对象,节点可以有属性,也可以有子节点。 在Web页面中,DOM树形结构代表了页面的结构,我们可以通过JavaScript来操…

    JavaScript 2023年6月10日
    00
  • webpack实现热更新(实施同步刷新)

    webpack实现热更新是在开发过程中非常常见的需求,它可以在代码修改后自动刷新页面,使开发人员能够更方便地查看效果。下面是实现webpack热更新的完整攻略: 1. 配置webpack-dev-server webpack-dev-server是webpack中的一个开发服务器,它可以实现热更新,而我们只需要在启动webpack-dev-server时添加…

    JavaScript 2023年6月1日
    00
  • 解析原来浏览器原生支持JS Base64编码解码

    当我们需要在前端对数据进行编码或解码时,可以使用JavaScript中的Base64方法。而浏览器也提供了原生支持Base64编码解码的方法,我们只需要使用浏览器提供的方法即可。 浏览器原生方法 浏览器原生方法包括 window.btoa() 和 window.atob(),分别用于编码和解码Base64数据。 编码方法:window.btoa() 将字符串…

    JavaScript 2023年5月19日
    00
  • JavaScript ES6中class定义类实例方法

    首先我们需要了解一下ES6中class定义类实例方法的基本语法。在ES6中,我们可以使用class语法来定义类。类中可以定义实例方法,与函数类似,实例方法可以访问类的属性和其他实例方法。 下面是定义一个简单的类,并在其中定义一个实例方法的示例代码: class Person { constructor(name, age) { this.name = nam…

    JavaScript 2023年6月10日
    00
  • js判断传入时间和当前时间大小实例(超简单)

    下面是详细的讲解。 题目分析 题目要求我们编写一个 JavaScript 函数,能够判断传入的时间与当前时间的大小关系,即以当前时间为基准,判断传入时间是前面还是后面。 实现思路 我们可以使用 Date 对象获取当前时间和传入时间的时间戳,再进行比较即可。 时间戳是一个数字,表示某个时间点与 Unix 纪元时间点(1970 年 1 月 1 日 00:00:0…

    JavaScript 2023年5月27日
    00
  • javascript 日期联动选择器 [其中的一些代码值得学习]

    下面是详细讲解“javascript 日期联动选择器”的攻略。 1. 简介 javascript 日期联动选择器是一种基于javascript的日期选择器,用户可以通过该日期选择器选择年、月、日。此日期选择器的主要特点是具有联动效果,可以自动判断月份的天数,具有良好的用户体验。 2. 实现思路 该日期选择器的实现思路如下:- 首先在html中定义3个sele…

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