JavaScript中处理时间差

ES6版本

function countdown(endTime, includeSeconds = true) {// 获取当前时间let now = new Date();// 将传入的结束时间字符串转换为日期对象let endDateTime = new Date(endTime);// 检查传入的时间字符串是否只包含日期(不包含时分秒)if (endTime.trim().split(' ').length === 1) {// 如果只有日期,则将时间设置为该日期的午夜(00:00:00)endDateTime.setHours(0, 0, 0, 0);}// 计算当前时间与结束时间的时间差(单位:毫秒)let timeDifference = endDateTime - now;// 计算剩余的天数、小时数、分钟数和秒数let days = Math.floor(timeDifference / (24 * 3600 * 1000));let hours = Math.floor((timeDifference % (24 * 3600 * 1000)) / (3600 * 1000));let minutes = Math.floor((timeDifference % (3600 * 1000)) / (60 * 1000));let seconds = Math.floor((timeDifference % (60 * 1000)) / 1000);// 构建倒计时字符串let countdownString = `${days}天${hours}时${minutes}分`;// 根据includeSeconds参数决定是否包含秒数if (includeSeconds) {countdownString += `${seconds}秒`;}return countdownString;
}// 示例用法
// countdown('2078-01-28'); // 只有日期
// countdown('2078-01-28 12:30:00'); // 日期和时间
// countdown('2078-01-28', false); // 只有日期,不包含秒数

ES5版本 

function countdown(endTime, includeSeconds) {// 设置默认值,如果includeSeconds未定义,则默认为trueincludeSeconds = typeof includeSeconds !== 'undefined' ? includeSeconds : true;// 获取当前时间var now = new Date();// 将传入的结束时间字符串转换为日期对象var endDateTime = new Date(endTime);// 检查传入的时间字符串是否只包含日期(不包含时分秒)if (endTime.trim().split(' ').length === 1) {// 如果只有日期,则将时间设置为该日期的午夜(00:00:00)endDateTime.setHours(0, 0, 0, 0);}// 计算当前时间与结束时间的时间差(单位:毫秒)var timeDifference = endDateTime - now;// 计算剩余的天数、小时数、分钟数和秒数var days = Math.floor(timeDifference / (24 * 3600 * 1000));var hours = Math.floor((timeDifference % (24 * 3600 * 1000)) / (3600 * 1000));var minutes = Math.floor((timeDifference % (3600 * 1000)) / (60 * 1000));var seconds = Math.floor((timeDifference % (60 * 1000)) / 1000);// 构建倒计时字符串var countdownString = days + '天' + hours + '时' + minutes + '分';// 根据includeSeconds参数决定是否包含秒数if (includeSeconds) {countdownString += seconds + '秒';}return countdownString;
}// 示例用法
// countdown('2078-01-28'); // 只有日期
// countdown('2078-01-28 12:30:00'); // 日期和时间
// countdown('2078-01-28', false); // 只有日期,不包含秒数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/202507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

喜讯:麦田(苏州)医学科技有限公司立项项目获得2024年度浙江省医药卫生科技计划资助的公告

喜讯:麦田(苏州)医学科技有限公司立项项目获得2024年度浙江省医药卫生科技计划资助的公告 我们麦田(苏州)医学科技有限公司非常荣幸地宣布,由我们联合浙江省人民医院、杭州市红十字会医院、杭州师范大学共同…

Docker-多容器应用

一、概述 到目前为止,你一直在使用单个容器应用。但是,现在您将 MySQL 添加到 应用程序堆栈。经常会出现以下问题 - “MySQL将在哪里运行?将其安装在同一个 容器还是单独运行?一般来说,每个容器都应该做一件事&#x…

强化学习——简单解释

一、说明 最近 OpenAI 上关于 Q-star 的热议激起了我温习强化学习知识的兴趣。这是为强化学习 (RL) 新手提供的复习内容。 二、强化学习的定义 强化学习是人类和其他动物用来学习的学习类型。即,通过阅读房间来学习。(从反馈中学习)。让我解…

在C#中,PropertyInfo.SetValue方法用于设置属性值

在C#中,PropertyInfo.SetValue方法用于设置属性值。该方法接受两个参数:对象实例和属性值。下面是一个示例代码,演示如何使用PropertyInfo.SetValue方法设置属性值: using System; using System.Reflection; public class Per…

基于深度学习CRNN的水表读数识别系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着科技的不断发展,深度学习技术在各个领域都取得了显著的成果。其中,基于深度学习的图像识别技术在计算机视觉领域具有重要的应用价值。…

Linux环境搭建(Ubuntu22.04)+ 配置共享文件夹(Samba)

Linux开发环境准备 搭建Linux开发环境所需要的软件如下: VMware虚拟机:用于运行Linux操作系统的虚拟机软件之一,VMware下载安装在文章中不做说明,可自行百度谢谢Ubuntu光盘镜像:用于源代码编译,有闲置计算…

maven生命周期回顾

目录 文章目录 **目录**两种最常用打包方法:生命周期: 两种最常用打包方法: 1.先 clean,然后 package2.先 clean,然后install 生命周期: 根据maven生命周期,当你执行mvn install时&#xff0c…

大数据Hadoop-HDFS_架构、读写流程

大数据Hadoop-HDFS 基本系统架构 HDFS架构包含三个部分:NameNode,DataNode,Client。 NameNode:NameNode用于存储、生成文件系统的元数据。运行一个实例。 DataNode:DataNode用于存储实际的数据,将自己管理…

Python (二) 读写excel文件

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

妈妈和老婆掉进水里,孟子认为先救老婆是禽兽

妈妈和老婆同时掉进水里先救谁? 多数男人不敢回答,怕得罪老婆。孟子认为,必须先救妈妈。因为父母都照顾不好,是不孝。先救妈妈,再救老婆。 中国人的信仰是天,以及孔孟之道。中国人不信宗教。 孟子&#x…

【普中开发板】基于51单片机温度报警器设计( proteus仿真+程序+实物演示+讲解视频)

这里写目录标题 1. 主要功能:2. 讲解视频:3. 仿真4. 实物烧录和现象5. 程序代码6. 设计资料内容清单&&下载链接资料下载链接: 【普中开发板】基于51单片机温度报警器设计( proteus仿真程序实物演示讲解视频) Proteus 仿真…

java-使用poi时报错Method org/apache/poi/xssf/usermodel/XSSFWorkbook.close()V is abst

报错信息1 AbstractMethodError: Method org/apache/poi/xssf/usermodel/XSSFWorkbook.close()V is abstract 解决:是因为poi 3.11才有close,升级pom文件的版本就可以了 报错信息2 Package should contain a content type part [M1.13] 报错信息3 tried…

求职招聘小程序源码系统 全开源源代码:找工作+招人才 平台级别运营版 附带完整的搭建教程

在当前的求职招聘市场中,尽管存在大量的求职者和招聘者,但依然存在着信息不对称、沟通不畅等问题。小编来给大家分享一款求职招聘小程序源码系统,旨在提供一个高效、便捷、安全的求职招聘平台。 以下是部分代码示例: 系统特色功能…

Java——正则表达式

1、什么是正则表达式 一个正则表达式,就是用某种模式去匹配字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用,不过,经过练习后,就觉得这些复杂的表达式写起来还是相当简单的,而且,一…

vue3实现2d楼宇模型

需求背景解决效果视频效果2dFloor.vue 需求背景 需要实线一个2d楼宇模型&#xff0c;并按照租户温度渲染颜色 解决效果 视频效果 2dFloor.vue <!--/*** author: liuk* date: 2023/12/06* describe: 2d楼宇模型* CSDN:https://blog.csdn.net/hr_beginner?typeblog*/--&g…

7+衰老+分型+预后模型生信思路,没思路的同学们可参考

今天给同学们分享一篇生信文章“Identification and validation of a novel senescence-related biomarker for thyroid cancer to predict the prognosis and immunotherapy”&#xff0c;这篇文章发表在Front Immunol期刊上&#xff0c;影响因子为7.3。 结果解读&#xff1a;…

vue3 print ts打印组件

依赖安装 npm install vue3-print-ts 全局注入 import { createApp } from vue import App from ./App.vue import Print from vue3-print-tsconst app createApp(App) app.directive("print", Print) 页面使用&#xff08;element plus ui 例子&#xff09; &…

STM32CubeIDE的stm32f4xx_hal_conf.h配置文件的一点功能解释

STM32CubeIDE的程序功能写多了&#xff0c;一般不愿意再次使用.ioc这个配置工程的底层了&#xff0c;因为有部分程序是直接改配置的&#xff0c;一旦再次生成就会冲掉自己改的部分&#xff0c;因为不能自己定义 /* USER CODE BEGIN 1 *//* USER CODE END 1 */这样的不被重新生成…

Django大回顾 - 8 中间件、csrf认证相关

【1】中间件 中间件是什么&#xff1f; 中间件顾名思义&#xff0c;是介于request与response处理之间的一道处理过程&#xff0c;相对比较轻量级&#xff0c;并且在全局上改变django的输入与输出。因为改变的是全局&#xff0c;所以需要谨慎实用&#xff0c;用不好会影响到性能…

docker镜像管理,仓库管理基本命令

镜像管理 搜索镜像 语法&#xff1a; docker search 镜像名 [-f stars100] [rootlocalhost ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx …