当前位置: 首页 > 知识库问答 >
问题:

Java时间单位-设置一周的时间单位

公羊英达
2023-03-14

我正在尝试一些方法和一个动作/“命令”的响应,可以每周使用一次(垃圾邮件预防)。我唯一的问题是如何将我的java时间设置为一周。这就是我所拥有的:

public static long displayTime;

方法:

    public static boolean setDisplayName(Player player, String displayName) {
    synchronized (cachedNames) {
        if((SerializableFilesManager.containsPlayer(Utils.formatPlayerNameForProtocol(displayName)) || cachedNames.contains(displayName) || !cachedNames.add(displayName)))
            return false;
        if(player.hasDisplayName())
            cachedNames.remove(player.getDisplayName());
    }
    displayTime = System.currentTimeMillis() + (1000*60*60);
    String displayname = player.getDisplayName();
    player.setDisplayName(displayName);
    FriendChatsManager.refreshChat(player);
    Highscores.highscores(player, displayname);
    player.getAppearence().generateAppearenceData();
    return true;
}

public static String convertToTime() {
    String time = "You have to wait "+(getTime() == 0 ? "few more seconds" :      getTime()+" minutes")+" to change your display name again!";
    return time;
}

public static int getTime() {
    return (int) (displayTime-System.currentTimeMillis()/60000);
}    

我想把“星期”时间改成displayTime=System。currentTimeMillis()(1000*60*60);。我相信(1000*60*60)是24小时,对吗?这是我唯一的问题。解决此问题后,用户每周只能使用该命令一次。命令就在这里:

case "setdisplay":
            if (DisplayNames.displayTime > System.currentTimeMillis()) {
                player.getPackets().sendGameMessage(DisplayNames.convertToTime());
                return true;
            }
            if (!player.isDonator() && !player.isExtremeDonator()) {
                player.getPackets().sendGameMessage(
                        "You do not have the privileges to use this.");
                return true;
            }

DisplayNames是方法和一切都在的类。谢谢你所有的帮助,我相信这只是一个愚蠢的问题: P。

~Derek

共有2个答案

贺轶
2023-03-14

我用日历。一周中的几天

楮法
2023-03-14

你可以使用日历类,它有修改日期的方法,比如添加日期。它可以转换为日期。它解决了我关于时间的大部分问题。希望它也适用于你。

 类似资料:
  • seconds,minutes,hours,days,weeks,years均可做为后缀,并进行相互转换,默认是seconds为单位。 默认规则如下: 1 == 1 seconds 1 minutes == 60 seconds 1 hours == 60 minutes 1 days == 24 hours 1 weeks = 7 days 1 years = 365 days 如果你需要进行使

  • After Effects 中的许多数量是时间点或者时间跨度,包括图层、素材项目和合成的当前时间、图层入点和出点以及持续时间。 默认情况下,After Effects 用 Society of Motion Picture and Television Engineers(电影与电视工程师协会,SMPTE)时间码显示时间:时、分、秒和帧。您可以更改为其他时间显示系统,例如帧数或者 16 毫米或 3

  • 代码: 如果花费时间超过1s(类似于网络的原因),那么另一个线程可以获得锁,但这会导致一些问题(例如超卖)。如果使用,当此客户端脱机时,它将永远不会解锁锁,其他客户端无法获得锁。如何解决或平衡这个问题?

  • 我正在使用ExecutorService.invokeAll(Callable, timeout, TimeUnit)方法 在提交给ExecutorService的每个Callable中,我都有一个future.get() 未来会发生什么。即使executorService已超时,get()仍将在后台运行? 我必须指定未来的超时时间吗。获取(timeout,TimeUnit)并抛出TimeoutE

  • 我在配置Anylogic模型上的传递时间时遇到了一个问题:我想将模型时间的每个刻度配置为1x时的5分钟。更清楚地说,我所做的所有事情都是在“项目”选项卡上显示的项目组件上完成的。在阅读指南和手册时,我看到,通过单击项目根目录,我可以以分钟为单位配置时间单位,这允许我以1分钟为单位运行它。我试图修改模拟选项,将“实时缩放”设置为5,但当我运行实验时,它会自动从5倍开始。有什么方法可以满足我的需要吗?

  • 问题内容: 在Unix系统上,是否有办法在Java中获得具有微秒级精度的时间戳?类似于C的gettimeofday函数。 问题答案: 不,Java没有该功能。 它确实具有System.nanoTime(),但是仅提供了一些先前已知时间的偏移量。因此,虽然您不能从中获取绝对数字,但可以使用它来测量纳秒(或更高)的精度。 请注意,JavaDoc表示,尽管这提供了纳秒级的精度,但这并不意味着纳秒级的精度