在 JavaScript 中获取日期之间的相对时间戳差异
您是否在任何网站上看到过显示时间戳的通知?它显示诸如“12 分钟前”、“2 天前”、“10 小时前”等内容。它与两个日期或时间之间的时间戳差异有关。
此外,某些应用显示该设备的上次登录时间是 22 小时前。因此,获取两个日期之间的时间戳差异有很多用途。
在本教程中,我们将学习不同的方法来获取两个日期之间的相对时间戳差异。
使用带有日期的 getTime() 方法并创建自定义算法
在 JavaScript 中,我们可以使用 new Date() 构造函数创建日期对象。此外,我们可以将特定日期作为 Date() 构造函数的参数传递,以使用该日期值初始化日期对象。
getTime() 方法返回从 1970 年 1 月 1 日至今的总秒数。因此,我们可以找到两个日期的总毫秒数,然后减去它们以获得毫秒差。使用该毫秒,我们可以找到以秒、分钟、年等为单位的时间戳差异。
语法
用户可以按照下面的语法来获取两个日期之间的相对时间戳差异。
let second_diff = (current_date.getTime() - previous_date.getTime())/1000;
在上面的语法中,current_date 和 pervious_date 是两个不同的日期。我们使用 getTime() 方法来获取两个日期之间的毫秒差。
注意- 通过将 second_diff 变量的值与毫秒进行比较,您可以获得相对时间戳差异。
步骤
用户可以按照以下步骤查找不同单位(例如天、月、年等)的两个日期之间的相对时间戳。
第 1 步 - 创建两个不同的日期。
步骤 2 - 使用 getTime() 方法获取两个日期的总毫秒数并获取它们之间的差值。另外,将毫秒差除以 1000 将其转换为秒,并将其存储在 secondary_diff 变量中。
步骤 3 - 现在,使用 if-else 条件语句来查找相对时间戳差异。
步骤 4 - 如果 second_diff 的 值小于 60,则差异以秒为单位。 Second_diff 的值在 60 到 3600 之间,差异以小时为单位。用户还可以像这样计算日、月、年。
示例
在下面的示例中,我们使用 Date 构造函数创建了两个不同的日期对象,并使用上述步骤查找两个日期之间的相对时间戳。
在输出中,用户可以观察到以下代码代表月份的时间戳差异。
<html> <body> <h3>Getting the relative timestamp difference between two dates using the <i> custom algorithm </i></h3> <p id="output"></p> <script> let output = document.getElementById("output"); // creating the current date let current_date = new Date(); // previous date let previous_date = new Date("jan 14, 2022 12:21:45"); // finding the difference in total seconds between two dates let second_diff = (current_date.getTime() - previous_date.getTime()) / 1000; output.innerHTML += "The first date is " + current_date + "</br>"; output.innerHTML += "The second date is " + previous_date + "</br>"; // showing the relative timestamp. if (second_diff < 60) { output.innerHTML += "difference is of " + second_diff + " seconds."; } else if (second_diff < 3600) { output.innerHTML += "difference is of " + second_diff / 60 + " minutes."; } else if (second_diff < 86400) { output.innerHTML += "difference is of " + second_diff / 3600 + " hours."; } else if (second_diff < 2620800) { output.innerHTML += "difference is of " + second_diff / 86400 + " days."; } else if (second_diff < 31449600) { output.innerHTML += "difference is of " + second_diff / 2620800 + " months."; } else { output.innerHTML += "difference is of " + second_diff / 31449600 + " years."; } </script> </body> </html>
使用Intl的RelativeTimeFormat() API
Intl是指国际化API。它包含各种日期和时间格式化方法。我们可以使用 Intl 对象的 RelativeTimeFormat() 方法来获取两个日期之间的相对时间戳。
语法
用户可以按照以下语法使用RelativeTimeFormat() API 来获取两个日期之间的相对时间戳。
var relativeTimeStamp = new Intl.RelativeTimeFormat("en", { numeric: "auto",}); // compare the value of RelativeTimeStamp with milliseconds of different time units
在上述语法中,RelativeTimeFormat() 方法返回时间戳差异。 time_Stamp_unit 是一个包含不同时间单位及其总毫秒数的对象。
步骤
第 1 步 - 创建一个单位对象,其中包含时间单位作为键,总毫秒数作为该时间单位的值。
步骤 2 - 获取两个日期之间的时间差(以毫秒为单位)。
第 3 步 - 现在使用 for-in 循环迭代 time_stamp_unit 对象并检查 second_diff 的值是否大于特定时间的总毫秒数;使用 RelativeTimeFormat() API 的 format 方法来格式化该特定单位的时间戳。
第 4 步 - 之后,中断 for 循环。
示例
在下面的示例中,我们使用 RelativeTimeFomrat() 方法来获取两个日期之间的相对时间戳差异,如上述语法和步骤中所述。
<html> <body> <h3>Getting the relative timestamp difference between two dates using the <i> RelativeTimeFormat() </i> method </h3> <p id="output"></p> <script> let output = document.getElementById("output"); let current_date = new Date(); let previous_date = new Date("jan 14, 2022 12:21:45"); // finding the difference in total seconds between two dates let second_diff = current_date.getTime() - previous_date.getTime(); output.innerHTML += "The first date is " + current_date + "</br>"; output.innerHTML += "The second date is " + previous_date + "</br>"; var time_Stamp_unit = { year: 31536000000, month: 31536000000 / 12, day: 86400000, hour: 3600000, minute: 60000, second: 1000, }; var relativeTimeStamp = new Intl.RelativeTimeFormat("en", { numeric: "auto", }); // iterate through all time stamps for (var ele in time_Stamp_unit) { // if second_diff's value is greater than particular timesapm unit's total millisecond value, format accordingly if (Math.abs(second_diff) > time_Stamp_unit[ele] || ele == "second") { output.innerHTML += "The difference between two dates is " + relativeTimeStamp.format( Math.round(second_diff / time_Stamp_unit[ele]), ele ); break; } } </script> </body> </html>
用户学会了使用 if-else 语句和 RelativeTimeFormat() API 的 format() 方法查找两个日期之间的相对时间戳。用户可以根据自己的需要使用这两种方法。
以上是在 JavaScript 中获取日期之间的相对时间戳差异的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。
