Javascript 如何返回process.uptime();从毫秒到人类可读的格式?
我在制造一个不和机器人。我试过这个-Javascript 如何返回process.uptime();从毫秒到人类可读的格式?,javascript,node.js,discord,Javascript,Node.js,Discord,我在制造一个不和机器人。我试过这个- bot.on('message', message => { if (message.content === '!uptime') { var time = process.uptime(); function dhm(ms) { days = Math.floor(ms / (24 * 60 * 60 * 1000)); daysms = ms % (24 * 60 * 60 * 1000);
bot.on('message', message => {
if (message.content === '!uptime') {
var time = process.uptime();
function dhm(ms) {
days = Math.floor(ms / (24 * 60 * 60 * 1000));
daysms = ms % (24 * 60 * 60 * 1000);
hours = Math.floor((daysms) / (60 * 60 * 1000));
hoursms = ms % (60 * 60 * 1000);
minutes = Math.floor((hoursms) / (60 * 1000));
minutesms = ms % (60 * 1000);
sec = Math.floor((minutesms) / (1000));
return days + ":" + hours + ":" + minutes + ":" + sec;
}
message.channel.sendMessage(dhm(time));
}
});
在聊天中,返回-0:0:0
// Uptime
bot.on('message', message => {
if (message.content === '!uptime') {
var time = process.uptime();
function dhm(t){
var cd = 24 * 60 * 60 * 1000,
ch = 60 * 60 * 1000,
d = Math.floor(t / cd),
h = Math.floor( (t - d * cd) / ch),
m = Math.round( (t - d * cd - h * ch) / 60000),
pad = function(n){ return n < 10 ? '0' + n : n; };
if( m === 60 ){
h++;
m = 0;
}
if( h === 24 ){
d++;
h = 0;
}
return [d, pad(h), pad(m)].join(':');
}
message.channel.sendMessage(dhm(time));
}});
//正常运行时间
bot.on('message',message=>{
如果(message.content=='!正常运行时间'){
var time=process.uptime();
功能dhm(t){
变量cd=24*60*60*1000,
ch=60*60*1000,
d=数学楼层(t/cd),
h=数学楼层((t-d*cd)/ch),
m=数学四舍五入((t-d*cd-h*ch)/60000),
pad=函数(n){返回n<10?'0'+n:n;};
如果(m==60){
h++;
m=0;
}
如果(h==24){
d++;
h=0;
}
返回[d,pad(h),pad(m)]。连接(':');
}
message.channel.sendMessage(dhm(time));
}});
这将返回0:00:00
我正在尝试转换
process.uptime()的值代码>分为天、小时、分钟和秒。任何帮助都将不胜感激。顺便说一句,给出的第一条评论并非100%正确。根据最新的文档,返回值包括几分之一秒。应使用Math.floor()来获取整秒。因此,要以毫秒为单位获得正常运行时间,process.uptime()
值需要乘以1000
。下面的代码示例可能会执行您想要的操作。由于示例使用了不同的格式,您可能希望将代码调整为您喜欢的格式,该格式应该是直截了当的
您可以在上试用此代码的变体
FWIW文档说它以秒为单位返回正常运行时间,而不是以毫秒为单位。console log process.uptime()可以查看您得到的结果
var uptime = process.uptime();
console.log("Uptime raw:", uptime)
const date = new Date(uptime*1000);
const days = date.getUTCDate() - 1,
hours = date.getUTCHours(),
minutes = date.getUTCMinutes(),
seconds = date.getUTCSeconds(),
milliseconds = date.getUTCMilliseconds();
let segments = [];
if (days > 0) segments.push(days + ' day' + ((days == 1) ? '' : 's'));
if (hours > 0) segments.push(hours + ' hour' + ((hours == 1) ? '' : 's'));
if (minutes > 0) segments.push(minutes + ' minute' + ((minutes == 1) ? '' : 's'));
if (seconds > 0) segments.push(seconds + ' second' + ((seconds == 1) ? '' : 's'));
if (milliseconds > 0) segments.push(milliseconds + ' millisecond' + ((seconds == 1) ? '' : 's'));
const dateString = segments.join(', ');
console.log("Uptime: " + dateString);