在 djs 中编写一个命令来显示我的正常运行时间。当我运行它时,它会显示总秒数、分钟数、小时数等,但它不会将秒数和分钟数限制为秒,或将小时数限制为 24。
- task: DotNetCoreCLI@2
displayName: DotNetCoreCLI pack !master
condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
inputs:
command: 'pack'
packagesToPack: $(projectsNuGet)
nobuild: true
arguments: --version-suffix pre9999
答案 0 :(得分:0)
为什么除法会限制数字? 5678000 / 1000 总是会得到 5678。您要做的是取模 (%
) 而不是除法 (/
)。
const seconds = message.client.uptime % 1000;
const minutes = Math.floor((message.client.uptime / 1000)) % 60;
const hours = Math.floor((message.client.uptime / (60 * 1000))) % 60;
const days = Math.floor(message.client.uptime / (60 * 1000 * 60 * 24));
if(command === "uptime") {
message.channel.send(`The bot has been up for` + ` ` + `${days} days,` + ` ` + `${hours} hours,` + ` ` + `${minutes} minutes` + ` ` + `${seconds} seconds.`)
return;
}
不过,有一个更好的解决方案。将数字转换为日期格式,并使用它直接获取分钟、小时、天等 - 它唯一的缺点是它给出了一个月中的某一天,而不是自 JS Epoch 时间以来经过的天数,因此(除非有一个偶数我不知道的更清洁的解决方案)您需要再初始化一个变量。
另外,如果你可以简单地传递一个带有参数的字符串,为什么要连接字符串?
无论如何,这是我对您的问题的解决方案:
var uptime = new Date(message.client.uptime);
const days = Math.floor(message.client.uptime / (60 * 1000 * 60 * 24));
if(command === "uptime") {
message.channel.send(`The bot has been up for ${days} days, ${uptime.getHours()} hours, ${uptime.getMinutes()} minutes ${uptime.getSeconds()} seconds.`)
return;
}