System.currentTimeMillis()

System.currentTimeMillis()

在 Spigot 中,我正在创建一个每日奖励插件,我需要在其中存储用户连续登录的天数,但我的主要问题是 System.currentTimeMillis()。我想创建一个显示小时和分钟的服务器时间。当到达设定的时间,例如凌晨 1 点或 5 点时,如果玩家加入,他们已经在第二天登录(以及他们是否在线)。我要补充的另一件事是,如果用户在设定的时间(例如半小时)内保持在线,他们将获得奖励,然后如果他们在线保持约 1 小时,则会获得更大的奖励,并且奖励会逐渐增加。 System.currentTimeMillis() 是否会在每次服务器重新启动时重新启动?我该怎么办?

正如 System.currentTimeMillis() 的 javadoc 所说 returns 当前时间与 1970 年 1 月 1 日午夜 UTC 之间的差异,以毫秒为单位。

所以答案是否定的,它不会在每次服务器重新启动时重新启动。

System.currentTimeMillis() 只会随时为您提供当前系统时间。我想您的用例是测量每个用户的登录持续时间。我希望在每个用户会话对象中维护它。

您可能想使用 GregorianCalendar 来解码日期:

Calendar calendar = new GregorianCalendar(); // arguments allow to set time zone

// one of them:
calendar.setTime(new Date());
calendar.setTimeInMillis(System.currentTimeMillis());

System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));