1614234446082ms 是什么意思以及如何限制它(JDA Java Discord Bot)

What Does 1614234446082ms Mean and How can You Limit It(JDA Java Discord Bot)

我正在尝试制作一个会响应您的 ping 的乒乓机器人。问题是它的响应是这样的:

Pong!
1614234538419%d ms

谁能解释一下这是什么意思?另外,如果可以的话,有没有办法简化这个? 这是代码:

package Events;

import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class PingPong extends ListenerAdapter {
    @Override
    public void onMessageReceived(MessageReceivedEvent e) {
        Message msg = e.getMessage();
        long time = System.currentTimeMillis();
        if (msg.getContentRaw().equalsIgnoreCase("!ping")) {
            e.getChannel().sendMessage("Pong!").queue();
            e.getChannel().sendMessage(time + "ms").queue();
        };
    }
}

System.currentTimeMillis() returns 自 Unix 纪元开始以来的毫秒数,即 1.1.1970 UTC 午夜。我不确定你的目的是什么,但如果你想测量时间,你需要计算两个时间点的相对差异,例如

long start = System.currentTimeMillis();
// do some long computation
long end = System.currentTimeMillis();
System.out.println("Computation took " + (end - start) + " ms");

如果您要查找 return 当前时间,您可以使用 LocalDateTime.now()(不带时区)或 ZonedDateTime.now()(带时区)。注意 return 是一个对象——如果你想打印一些字符串表示,你可以使用 DateTimeFormatter 并传递你想要使用的格式:

LocalDateTime date = LocalDateTime.now();
DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date)

e.getChannel().sendMessage(time + "ms").queue() 写入自 unix epoch. That specific value means“2021 年 2 月 25 日星期四 06:27:26 GMT+0000”开始以来的当前时间(以毫秒为单位)。

您可以删除此行。或者使用一种方法将数字转换为字符串。我不是 Java 程序员,但肯定有一些方法。