首页 > 其他分享 >js统计时间段总时长的倒计时

js统计时间段总时长的倒计时

时间:2024-08-10 15:24:59浏览次数:11  
标签:hours 00 const 19 总时长 60 js 倒计时 now

规则说明:
1.时间段:09:00-19:00 和 19:00-02:00(次日)
2.分别计算出两个时间段的总时长,数据格式为 HH: MM:SS
3.当前时间符合哪个时间段,就按照哪个时间段的总时长
4.每一秒中刷新一下总时长

Vue3 代码块

// Countdown.vue

<template>
   <main class='countdown_wrapper'>
      {{countdown}}
   </main>
</template>
<script lang="ts" setup>
  import {ref,reactive} from 'vue'
  const countdown = ref(0) // 倒计时
  
  // 格式 HH:MM:SS
  const HHMMSSFormatTime = (endTime) => {
     const now = new Date().getTime();
     const distance = endTime - now; // 总计结束时间-当前时间 拿到时间差
     const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
     const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
     const seconds = Math.floor((distance % (1000 * 60)) / 1000);
  
     return { hours, minutes, seconds };
  }
  // 更新总时长的倒计时
  const updateCoundownTime = () => {
   const now = new Date();
   const hours = now.getHours();
   const minutes = now.getMinutes();

   let endTime; // 初始化结束时间

   if (hours >= 9 && hours < 19) { // 时间段为  09:00-19:00,设置结束时间
     endTime = new Date(now.getFullYear(),now.getMonth(),now.getDate(),19,0,0); // 设置结束时间为19:00
   } else if (hours >= 19 || hours < 2) { // 时间段为 19:00-02:00(次日),设置结束时间
     endTime = new Date(now.getFullYear(),now.getMonth(),now.getDate() + 1, 2, 0, 0 ); // 设置结束时间为 次日02:00
   }

   if (endTime) {
     const remaining = getRemainingTime(endTime); // 拿到剩余时间
     countdown.value = `${remaining.hours}:${remaining.minutes}:${remaining.seconds}` // 设置显示的剩余时间
   }
  }
  onMounted(() => {
    setInterval(updateCoundownTime, 1000);
  });
<script/>

React 代码块

// Countdown.js
import {React,{useEffect,useState}} from 'react'
import css from "./index.scss"; // 引用的外联样式表
function Coundown (){
  const [countdown,setCountdown] = useState(0) // 倒计时
  
  useEffect(()=>{
     setInterval(()=>{
        updateCoundownTime() 
     },1000) // 每一秒刷新一回
  },[])

   // 格式 HH:MM:SS
  const HHMMSSFormatTime = (endTime) => {
     const now = new Date().getTime();
     const distance = endTime - now; // 总计结束时间-当前时间 拿到时间差
     const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
     const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
     const seconds = Math.floor((distance % (1000 * 60)) / 1000);
  
     return { hours, minutes, seconds };
  }
  // 更新总时长的倒计时
  const updateCoundownTime = () => {
     const now = new Date();
     const hours = now.getHours();
     const minutes = now.getMinutes();

     let endTime; // 初始化结束时间

     if (hours >= 9 && hours < 19) { // 时间段为  09:00-19:00,设置结束时间
        endTime = new Date(now.getFullYear(),now.getMonth(),now.getDate(),19,0,0); // 设置结束时间为19:00
     } else if (hours >= 19 || hours < 2) { // 时间段为 19:00-02:00(次日),设置结束时间
        endTime = new Date(now.getFullYear(),now.getMonth(),now.getDate() + 1, 2, 0, 0 ); // 设置结束时间为 次日02:00
     }

     if (endTime) {
        const remaining = getRemainingTime(endTime); // 拿到剩余时间
        setCountdown(`${remaining.hours}:${remaining.minutes}:${remaining.seconds}`) // 设置显示的剩余时间
     }
  }

  return (
    <main>
       <span className={css.countdown_wrapper}>{countdown}</span>
    </main>
  )
}



标签:hours,00,const,19,总时长,60,js,倒计时,now
From: https://blog.csdn.net/weixin_45132984/article/details/141090889

相关文章

  • next.js本地开发https实现
    很奇怪的需求,本地开发一般都是http://localhost:3000,但有些情况需要https://localhost:3000来debug,这类需求估计比较少,我看使用next.js的中文教程也比较少,这里记录一下。网上很多找到的教程都是自己去转一堆软件和依赖,还要分Mac和Windows,看着就头疼,这个实现方式是官方给的,通过NEX......
  • JS中【class】知识点详解
    JavaScript中的class是一种语法糖,用于简化创建和管理对象的原型链和继承。虽然JavaScript的核心依然是基于原型继承的,但class语法让面向对象编程风格更加直观和易于使用。1.定义类使用class关键字可以定义一个类。类通常包含构造函数和方法。classPerson{......
  • 【精品毕设推荐】基于SSM+jsp的会员管理系统设计与实现
    点击下载原文及代码,可辅助在本地配置运行摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于会员管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了会员管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低......
  • 【精品毕设推荐】基于SSM+jsp的公司员工信息管理系统设计与实现
    点击下载原文及代码,可辅助在本地配置运行摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本龙腾公司员工信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信......
  • 425.响应式的境外旅游私人订制网站 大学生期末大作业 Web前端网页制作 html+css+js
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有Web前端网页制作的各行各业的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这......
  • Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持
    就在昨晚,SpringAI发了个比较重要的更新。由于最近OpenAI推出了结构化输出的功能,可确保AI生成的响应严格遵守预定义的JSON模式。此功能显着提高了人工智能生成内容在现实应用中的可靠性和可用性。SpringAI紧随其后,现在也可以对OpenAI的结构化输出完美支持了。下图展示了本......
  • Got an error when I tried to use the Openai SDK in Node.js
    题意:尝试在Node.js中使用OpenAISDK时遇到错误问题背景:IamtryingtouseOpenaiapiwithnodejs,IfollowthetutorialandwanttoaddasimplegpttextcompletionfeautureusingtheopenaiSDK,butIgotanerrorsays:/node_modules/openai/core.js:44con......
  • Javascript(turfjs)等值线图绘制
    Javascript(turfjs)等值线图绘制舍瓦温 2020-04-07阅读 5 分钟14 使用气象、环境类空间数据绘制等值线通常是由NCL、Python来做,在一些场景中:你只是想在WEB端做一些简单的绘制你的后端只有Node.js环境你纯粹是个前端工程师你也许需要......
  • 高德地图 JS API2.0(入门级使用教程)
    高德地图JSAPI2.0入门使用教程准备工作注册高德地图开发者账号进入高德开放平台首页使用手机号注册,然后完成身份认证。创建应用[应用管理]-->[创建新的应用]–>[填写应用名称以及应用类型]-->[添加],然后获取到安全密钥和key即可。过程如下图:阅读参考文档......
  • JS中原型相关的十个知识点总结
    JavaScript中的原型(Prototype)是理解对象和继承机制的核心概念。以下是我对JavaScript原型相关知识点的总结和详细讲解:1.原型对象(PrototypeObject)在JavaScript中,每个对象都有一个关联的对象,这个关联的对象称为“原型”。当你尝试访问一个对象的属性时,如果该对象本身......