我如何将浮点数转换为分钟,以添加到当前的UTC时间与Javascript?



我为自己是个十足的傻瓜提前道歉,但这些实际上是我尝试用Javascript完成某些事情的第一步摇摇欲坠,我感到有些失落和困惑。

我有以下浮动:53.93

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

我明白我应该首先将时间转换为毫秒,以便能够计算时差,但我在将浮点数转换为分钟和秒(或者我应该直接转换为毫秒吗?)

谢谢你。

JavaScript的Date以毫秒为单位工作,所以如果你有一个表示分钟的数字(无论是否包括小数分钟),你可以通过将其乘以60(得到秒)和1000(得到毫秒)将其转换为毫秒,例如,乘以60,000。,你说你的值是13.48,后来在你的问题文本中你说了"…这是两个不同的东西。一分钟的.48大约是28.79秒,而不是48秒。因此,如果您真的认为数字13.48代表13分钟和48秒,那么计算就比较复杂了:

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

您可以通过Date.now()获得当前日期/时间,它给出了自Epoch UTC(1970年1月1日午夜)以来的毫秒数。

您可以通过new Date(value)从给定的毫秒-since- the - epoch值创建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}`);