将格式为 "Minutes:Seconds:Milliseconds" 的计时器转换为总毫秒计数



下面是一个场景:我有一个正在运行的计时器,显示在我的页面上,还有一个文本区域,其中包含一些功能,允许用户点击键盘快捷键,以便将他们按键的时间自动填充到文本区域中。例如,如果用户在计时器为00:21:30时按下CMD+1,则文本区域自动填充"0";00:21:30-好好把握"在活动线路上。

以下是我正在使用的简单计时器和格式化代码:

export const formatMinutes = (time: number): string => {
return ('0' + Math.floor((time / 60000) % 60)).slice(-2);
}
export const formatSeconds = (time: number): string => {
return ('0' + Math.floor((time / 1000) % 60)).slice(-2);
}
export const formatMilliseconds = (time: number): string => {
return ('0' + ((time / 10) % 100)).slice(-2);
}
useEffect(() => {
let interval = null;
if (timerRunning) {
interval = setInterval(() => {
setTime((prev) => prev + 10);
}, 10);
} else {
clearInterval(interval);
}
return () => clearInterval(interval);
}, [timerRunning]);
const mins = formatMinutes(time);
const secs = formatSeconds(time);
const millisecs = formatMilliseconds(time);
const timecode = `${mins}:${secs}:${millisecs}`;

这一切都按我的意愿进行。我现在需要做的是,在用户单击按钮后,解析所有带时间戳的笔记的文本区域,并将这些时间戳转换回其原始数值,这样我就可以将它们转换为帧数,并将它们作为Premiere的标记管道传输到XML文件中。

数学从来都不是我的强项,所以我很难弄清楚如何将字符串时间戳XX:XX:XX转换回它最初派生的数字。有数学头脑的人能帮我一把吗?

如果问题只是如何"HH:MM:SS"=>quot;"毫秒";,然后:

const answer = (str: string) => {
const [hh, mm, ss] = str.split(':').map((str) => +str);
const seconds = hh * 3600 + mm * 60 + ss;
return seconds * 1000;
};

最新更新