js实现倒计时及时间对象

yizhihongxing

下面是详细讲解“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 数组常见操作技巧

    JavaScript 数组常见操作技巧 JavaScript 中的数组是非常常见和重要的数据结构之一,常用于存储和处理一系列的数据。在实际的开发中,经常需要对数组进行各种各样的操作,以下是 JavaScript 数组常见的操作技巧: 创建数组 在 JavaScript 中,可以通过以下方式创建数组: 直接量方式 直接将元素放在方括号中,以逗号分隔 var a…

    JavaScript 2023年5月18日
    00
  • javascript数组去重方法分析

    一、问题背景 在前端开发中,我们经常需要对JavaScript数组进行去重操作,以便保证数据的一致性和完整性。那么JavaScript数组去重的方法有哪些呢?本文将对目前主流的JavaScript数组去重方法进行详细的分析和讲解。 二、方法分析 利用Set数据结构 Set是ES6中的一种数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。我们可以通…

    JavaScript 2023年6月11日
    00
  • JavaScript中Iterator迭代器接口和循环

    JavaScript中的Iterator迭代器接口是用于实现遍历数据集合的一个标准接口,它可以遍历各种数据结构(包括数组、集合、字典等),并且提供了一种通用的方法来访问和操作这些数据结构中的个体元素。在JavaScript语言中,Iterator迭代器接口是一个非常重要的编程工具,它可以方便地实现循环遍历数据结构的过程。 Iterator迭代器接口的实现 I…

    JavaScript 2023年5月27日
    00
  • JScript中使用ADODB.Stream判断文件编码的代码

    请听我讲解“JScript中使用ADODB.Stream判断文件编码的代码”的完整攻略,主要包含以下几个步骤: 1. 引入ADODB.Stream对象 我们首先需要在JScript中引入ADODB.Stream对象,这个对象可以处理二进制数据。在引入之前需要确认系统中是否已经安装了Microsoft ActiveX Data Objects库,否则需要先安装…

    JavaScript 2023年5月19日
    00
  • 微信小程序开发探究

    微信小程序开发探究 微信小程序是一种全新的开发模式,可以实现在微信中快速开发小型应用。本文旨在为开发者提供一份完整的微信小程序开发攻略,涵盖从创建应用、开发基本组件到调用API等方面的内容。 创建应用 要创建一个微信小程序,需要进行以下步骤: 下载并安装微信开发者工具; 在工具中,选择“新建小程序”; 填写小程序的基本信息,并选择开发模式; 进入开发者工具的…

    JavaScript 2023年6月11日
    00
  • JS 截取字符串substr 和 substring方法的区别

    首先我们先来讲一下substr和substring的共同点,它们都是用来截取字符串的方法,所不同的是它们的参数和使用方法略有不同。 substr方法 substr方法接受两个参数,第一个参数是起始位置,第二个参数是截取的字符串长度。如果第二个参数是负数,则表示从起始位置开始往后数n个字符,并截取到字符串结束的位置。如果第一个参数是负数,表示从字符串末尾开始往…

    JavaScript 2023年5月28日
    00
  • JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】

    JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】 在JavaScript中,可以使用Date对象来获取当前时间和日期,并对其进行一些简单和复杂的操作。为了方便起见,以下是获取日期的常见方法实例: 获取当前日期 要获取当前日期,可以使用以下代码: let today = new Date(); let year = today.getFullY…

    JavaScript 2023年5月27日
    00
  • 详解如何优雅迭代JavaScript字面对象

    下面我将详细讲解如何优雅迭代JavaScript字面对象。 什么是字面对象? 字面对象是JS中一种非常常见的数据类型。它就像一个存储键值对的容器,用于表示一个对象或者一个数组等数据结构。比如下面这个字面对象: const person = { name: "张三", age: 20, sex: "男", address…

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