如何使用 Javascript 将浮点数转换为分钟以添加到当前 UTC 时间?

How can I convert float number into minutes to be added to the current UTC time with Javascript?

我为自己是个彻头彻尾的笨蛋而提前道歉,但实际上这是我尝试用 Javascript 完成某些事情的第一步,我感到有些迷茫和困惑。

我有以下浮点数:53.93

这个十进制值代表分钟和秒,它来自于我从网络浏览器的地理位置 API 获得的经度乘以四 (x4)。我将这个值存储在一个变量中,我想将它转换成分钟和秒,这样我就可以将它添加到当前的 UTC 时间,这样我就可以在屏幕上获得一个新的 HH:MM:SS 时间,并增加差异(当前UTC 时间 + 53 分 93 秒。)

我知道我应该先将时间转换成毫秒才能计算时差,但我一直坚持将浮点数转换成分钟和秒(或者我应该直接将其转换成毫秒吗?)

谢谢你。

JavaScript 的 Date 以毫秒为单位工作,因此如果您有一个表示分钟的数字(无论是否包括小数分钟),您可以通过将其乘以 60 将其转换为毫秒(得到秒)和 1000(得到毫秒),例如,乘以 60,000。 但是,你说你有值 13.48 并且稍后在你的问题文本中你说 "...当前 UTC 时间 + 13 分 48 秒..." 这是两个不同的东西。 .48 一分钟大约是 28.79 秒,而不是 48 秒。所以如果你真的是说 13.48 这个数字应该是 1348 秒,那么计算就更简单了:

const value = 13.48;
const wholeMinutes = Math.trunc(value);
const milliseconds = (wholeMinutes * 60 + (value - wholeMinutes)) * 1000;

您可以通过 Date.now() 获取当前的 date/time,它为您提供自大纪元 UTC(1970 年 1 月 1 日午夜)以来的毫秒数。

您可以通过 new Date(value).

从给定的自纪元以来的毫秒数值创建一个 Date 实例

因此,如果 13.48 表示小数分钟(13 分大约 28.79 秒):

const minutes = 13.48;
const nowPlusThoseMinutes = new Date(Date.now() + (minutes * 60000));

实例:

const minutes = 13.48;
const now = Date.now();
const nowPlusThoseMinutes = new Date(now + (minutes * 60000));
console.log(nowPlusThoseMinutes);
console.log(`now                 = ${new Date(now)}`);
console.log(`nowPlusThoseMinutes = ${nowPlusThoseMinutes}`);

minutes * 60000 周围的 () 不是必需的,由于运算符的优先级,* 将在 + 之前发生,但它们可以帮助让人类读者清楚地了解您的意图。)

但是你的意思是13分48秒:

const value = 13.48;
const wholeMinutes = Math.trunc(value);
const milliseconds = (wholeMinutes * 60 + (value - wholeMinutes)) * 1000;
const nowPlusValue = new Date(Date.now() + milliseconds);

实例:

const value = 13.48;
const wholeMinutes = Math.trunc(value);
const milliseconds = (wholeMinutes * 60 + (value - wholeMinutes)) * 1000;
const now = Date.now();
const nowPlusValue = new Date(now + milliseconds);
console.log(`now          = ${new Date(now)}`);
console.log(`nowPlusValue = ${nowPlusValue}`);