我为自己是个十足的傻瓜提前道歉,但这些实际上是我尝试用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}`);