在 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
职能中,我们:
- 通过将值除以 将毫秒转换为秒
1000
。 - 通过将值除以将秒转换为分钟
60
。 - Converted the minutes to hours by dividing the value by
60
. - (Optionally) – you can use the modulo (%) operator to reset the values to
0
. If, for example, the user passed86400000
as the milliseconds, which
is equivalent to24
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.