如何使用 JavaScript 将秒转换为 HH-MM-SS?

front end technologyjavascriptweb development

在本教程中,我们将学习使用原生 JavaScript 将秒转换为 小时、分钟秒 (HHMM-SS) 格式。

日期和时间是我们日常生活中不可或缺的一部分;日期和时间经常用于计算机编程。您可能需要使用 JavaScript 编写一个带有日历、铁路时刻表或用于安排约会的界面的网站。因此,出于这些目的,JavaScript 为我们提供了一些内置函数,例如 getTime() 返回自 1970 年 1 月 1 日 00:00:00 以来的毫秒数。

使用 toISOString() 方法

我们可能需要将秒放入格式良好的结构中,以使其更容易理解。假设我们使用 JavaScript 来计算事件的持续时间,并且秒数由一个大数字组成。在这种情况下,我们需要将秒数转换为小时、分钟和秒格式。此方法是将秒数转换为标准 HH-MM-SS 格式的最简单方法之一。

语法

用户可以按照以下语法使用 toISOString() 方法。

var calculateTime = new Date( null );
calculateTime.setSeconds( 5003 );
var newTime = calculateTime.toISOString().substr( 11, 8 );

示例

以下示例演示了如何使用 toISOString() 方法通过原生 JavaScript 将秒数转换为 HH-MM-SS。设置秒数并使用 toISOString() 方法返回一个长字符串,然后使用 JavaScript 的 .substr() 内置方法将其转换为子字符串,以获取 HHMM-SS 格式的输出。

<html> <body> <h2>Convert seconds to HH-MM-SS</h2> <h4>Using <i>toISOString()</i> method to convert 5003 seconds to HHMM-SS format.</h4> <div id = "container"></div> </body> <script> var calculatedTime = new Date(null); calculatedTime.setSeconds( 5003 ); //setting value in seconds var newTime = calculatedTime.toISOString().substr(11, 8); document.getElementById("container").innerHTML = newTime; </script> </html>

仅使用 Math.floor() 和一些数学逻辑

在此方法中,我们将使用 JavaScript 提供的一些简单数学逻辑和内置数学工具(如 Math.floor())将给定的秒数转换为 HHMM-SS 格式。这是最先想到的简单方法。

语法

var hoursLeft = Math.floor( seconds / 3600 );
var min = Math.floor(( seconds - hoursLeft * 3600 ) / 60 );
var secondsLeft = seconds - hoursLeft * 3600 - min * 60;
secondsLeft = Math.round( secondsLeft * 100 ) / 100;

算法

  • 步骤 1 - 由于一小时由 3600 秒组成,因此可以通过将秒数乘以 3600 来计算小时数。这将显示有多少小时。

  • 步骤 2 - 使用 Math.floor() 方法将上一步的值向下舍入

  • 步骤 3 - 减去小时数后,找出剩余的秒数。分钟数通过将此数字除以 60 来确定。

  • 步骤 4 - 可以通过从先前提供的总数中减去分钟和小时的秒数来确定秒数。

示例

借助下面给出的示例,用户将能够借助一些简单的数学逻辑轻松地将秒数转换为 HH-MM-SS 格式。

<html> <body> <h2>Convert seconds to HH-MM-SS</h2> <h4>Using <i>Math.floor()</i> method.</h4> <div id = "container"></div> </body> <script> var seconds = 129; var hoursLeft = Math.floor(seconds / 3600); var min = Math.floor((seconds - hoursLeft * 3600) / 60); var secondsLeft = seconds - hoursLeft * 3600 - min * 60; secondsLeft = Math.round(secondsLeft * 100) / 100; var answer = hoursLeft< 10 ? "0" + hoursLeft : hoursLeft; answer += ":" + (min < 10 ? "0" + min : min); answer += ":" + (secondsLeft< 10 ? "0" + secondsLeft : secondsLeft); document.getElementById("container").innerHTML = "129 seconds to time is : " + answer; </script> </html>

本文介绍了将秒转换为 HH-MM-SS 格式的最有效、最省时且最容易理解的方法。本文未介绍使用 moment.js 等外部库的较旧方法之一,因为 Moment 等库是为 JavaScript 生态系统的上一个时代构建的,而当前的网络状态存在很大差异。

day.js、LuxonDate-fns 等库是 moment.js 的一些替代方案,可用于直接获取特定格式的时间。所有方法都很好用,但应根据用户的需求使用。


相关文章