在 TypeScript 中计算两个日期之间的时间

在 TypeScript 中计算两个日期之间的时间

Calculate the time between 2 Dates in TypeScript

要计算 TypeScript 中 2 个日期之间的时间,请getTime()
在减去时在两个日期上调用该方法,例如
date2.getTime() - date1.getTime(). getTime()方法返回一个数字,表示 unix 纪元与给定日期之间的毫秒数。

索引.ts
const date1 = new Date('2022-09-24'); const date2 = new Date('2022-09-25'); const msBetweenDates = date2.getTime() - date1.getTime(); console.log(msBetweenDates); // 👉️ 86400000

我们使用
getTime
方法将日期转换为 unix 时间戳。

减法的结果是两个日期之间的毫秒数。

您可以轻松地将毫秒转换为任何其他单位。

这是一个将日期(毫秒)之间的差异转换为时间的示例,格式为hh:mm:ss.

索引.ts
function padTo2Digits(num: number) { return num.toString().padStart(2, '0'); } function convertMsToTime(milliseconds: number) { let seconds = Math.floor(milliseconds / 1000); let minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); seconds = seconds % 60; minutes = minutes % 60; // 👇️ If you want to roll hours over, e.g. 00 to 24 // 👇️ uncomment the line below // uncommenting next line gets you `00:00:00` instead of `24:00:00` // or `12:15:31` instead of `36:15:31`, etc. // 👇️ (roll hours over) // hours = hours % 24; return `${padTo2Digits(hours)}:${padTo2Digits(minutes)}:${padTo2Digits( seconds, )}`; } console.log(convertMsToTime(54000000)); // 👉️ 15:00:00 (15 hours) console.log(convertMsToTime(86400000)); // 👉️ 24:00:00 (24 hours) console.log(convertMsToTime(36900000)); // 👉️ 10:15:00 (10 hours, 15 minutes) console.log(convertMsToTime(15305000)); // 👉️ 04:15:05 (4 hours, 15 minutes, 5 seconds)

我们创建了一个可重用的函数,它以毫秒为参数并返回小时、分钟和秒的表示形式,格式为hh:mm:ss.

我们做的第一件事是创建一个padTo2Digits函数,如果小时、分钟或秒仅包含一个数字(小于10),该函数将负责添加前导零。
索引.js
function padTo2Digits(num) { return num.toString().padStart(2, '0'); } console.log(padTo2Digits(3)); // 👉️ '03' console.log(padTo2Digits(6)); // 👉️ '06' console.log(padTo2Digits(10)); // 👉️ '10'

我们要确保结果不会根据小时、分钟和秒在一位数和两位数值之间交替。

在我们的convertMsToTime职能中,我们:

  1. 通过将值除以 将毫秒转换为秒1000
  2. 通过将值除以将秒转换为分钟60
  3. Converted the minutes to hours by dividing the value by 60.
  4. (Optionally) – you can use the modulo (%) operator to reset the values to
    0. If, for example, the user passed 86400000 as the milliseconds, which
    is equivalent to 24 hours.

You can uncomment out the hours = hours % 24 line to roll the hours over.

The last step is to format the values for the hours, minutes and seconds in a
way that suits your use case.

We formatted them as hh:mm:ss in the example, by adding a leading zero if the
value is less than 10, however you can tweak the return value of the function
depending on your use case.