繁体   English   中英

System.currentTimeMillis()

[英]System.currentTimeMillis()

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

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

因此答案是“不”,它不会在每次服务器重新启动时都重新启动。

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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM