Javascript 如何计算JS date sys中的负数?

Javascript 如何计算JS date sys中的负数?,javascript,Javascript,我正在创建一个游戏项目,它发生在中世纪的幻想世界中,计时系统基于JS的数据系统。在本例中,游戏发生在1317年,我使用毫秒计算所有效果、药剂和类似的东西。但是,该值在我的系统中返回了一些逻辑问题。以毫秒为单位的初始值为-19964319812000,为负数。 下面是一个问题示例,将毫秒转换为分钟和小时的函数 const msToTime = function(milliseconds) { let minutes = Math.round((milliseconds/ (1000 * 6

我正在创建一个游戏项目,它发生在中世纪的幻想世界中,计时系统基于JS的数据系统。在本例中,游戏发生在1317年,我使用毫秒计算所有效果、药剂和类似的东西。但是,该值在我的系统中返回了一些逻辑问题。以毫秒为单位的初始值为-19964319812000,为负数。 下面是一个问题示例,将毫秒转换为分钟和小时的函数

const msToTime = function(milliseconds) {
    let minutes = Math.round((milliseconds/ (1000 * 60)));
    let hours = Math.round((milliseconds/ (1000 * 60 * 60)));
    let days = Math.round((milliseconds/ (1000 * 60 * 60 * 24)));

    if (minutes < 60) return minutes + " Min";
    else if (hours < 24) return hours + " Hrs";
    else return days + " Days";
}

我想问一下,是否有人知道解决方案,或者如何正确处理负面日期,谢谢。

似乎您可以使用Math.abs来解决这个问题

const msToTime = function(milliseconds) {
    let minutes = Math.round((Math.abs(milliseconds)/ (1000 * 60)));
    let hours = Math.round((Math.abs(milliseconds)/ (1000 * 60 * 60)));
    let days = Math.round((Math.abs(milliseconds)/ (1000 * 60 * 60 * 24)));

    if (minutes < 60) return minutes + " Min";
    else if (hours < 24) return hours + " Hrs";
    else return days + " Days";
}
console.log(msToTime(2500000)); "42 Min"
console.log(msToTime(-2500000)); "42 Min"
const msToTime=函数(毫秒){
让分钟数=Math.round((Math.abs(毫秒)/(1000*60));
让小时=数学圆((数学绝对值(毫秒)/(1000*60*60));
让days=Math.round((Math.abs(毫秒)/(1000*60*60*24));
如果(分钟<60)返回分钟数+“分钟”;
否则,如果(小时数<24)返回小时数+小时数;
否则返回天数+“天”;
}
console.log(msToTime(2500000));“42分钟”
console.log(msToTime(-2500000));“42分钟”
const msToTime=函数(毫秒){
让isNegative='';
if(毫秒.toString()包括(“-”){
isNegative=“-”;
}
让分钟=数学圆(数学绝对值(毫秒/(1000*60));
设小时=数学圆(数学绝对值(毫秒/(1000*60*60));
让天数=数学圆(数学绝对值(毫秒/(1000*60*60*24));
如果(分钟<60)返回为负+分钟+分钟;
否则,如果(小时<24)返回为负+小时+小时;
否则返回为负+天+天;
}
console.log(msToTime(2500000));//42分钟

console.log(msToTime(-2500000));//-42分钟
对于十四世纪的日期来说,使用现代日期函数毫无意义,因为我们的日历在当时甚至不存在。由于您只是在制作一个游戏,而不是某种历史软件,因此我建议您在计算中使用“2000”或类似值,然后在向用户显示年份值时从中减去您需要的任何值。
const msToTime = function(milliseconds) {
    let minutes = Math.round((Math.abs(milliseconds)/ (1000 * 60)));
    let hours = Math.round((Math.abs(milliseconds)/ (1000 * 60 * 60)));
    let days = Math.round((Math.abs(milliseconds)/ (1000 * 60 * 60 * 24)));

    if (minutes < 60) return minutes + " Min";
    else if (hours < 24) return hours + " Hrs";
    else return days + " Days";
}
console.log(msToTime(2500000)); "42 Min"
console.log(msToTime(-2500000)); "42 Min"