Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:创建一个没有GUI的计时器_Java_Timer - Fatal编程技术网

Java:创建一个没有GUI的计时器

Java:创建一个没有GUI的计时器,java,timer,Java,Timer,我正在开发一个IRC Twitch.tv机器人(PircBot),我想实现一个!正常运行时间命令,该命令将显示流在线的时间长度 我在谷歌搜索了一下,只找到了需要GUI的解决方案 有人能告诉我哪些库适合使用,或者给我一些示例代码吗 我需要显示秒、分钟、小时、天 首先,我想做一个正常的计时器,所有秒都计数+1,但我认为这更容易,并且有一些适当的函数来处理这种“计数”计时器,对吗 任何提示我都可以 谢谢:) 这就是我现在想到的: 在我的主课上,我有一个计时器,我用它来调用: utimecounttim

我正在开发一个IRC Twitch.tv机器人(PircBot),我想实现一个!正常运行时间命令,该命令将显示流在线的时间长度

我在谷歌搜索了一下,只找到了需要GUI的解决方案

有人能告诉我哪些库适合使用,或者给我一些示例代码吗

我需要显示秒、分钟、小时、天

首先,我想做一个正常的计时器,所有秒都计数+1,但我认为这更容易,并且有一些适当的函数来处理这种“计数”计时器,对吗

任何提示我都可以

谢谢:)

这就是我现在想到的:

在我的主课上,我有一个计时器,我用它来调用:

utimecounttimer();
我的计时器如下所示:

  public void utimecounttimer() {

        uptimetimer.scheduleAtFixedRate(new TimerTask() {
              @Override
              public void run() {
                  if (isstreamlive == true){
                  UptimeCount.Uptimestart();
                  }else{
                      UptimeCount.Uptimestop();
                  }
              }
              }, 1000, 1000);
}
然后我的UptimeCount类在这里:

public class UptimeCount {

    public static long startTime = 0;
    public static long  OnlineTimeMillis = 0;

    public static float OnlineTimeSec = 0;
    public static float  OnlineTimeMin = 0;
    public static float OnlineTimeHour = 0;
    public static float OnlineTimeDay = 0;



    public static void Uptimestart(){

        if(startTime == 0){
        startTime = System.currentTimeMillis();
        }else


        if(startTime != 0){
        OnlineTimeMillis = System.currentTimeMillis()-startTime;
        OnlineTimeSec = OnlineTimeMillis /1000F;
        OnlineTimeMin = OnlineTimeMillis /(60*1000F);
        OnlineTimeHour = OnlineTimeMillis /(60*60*1000F);
        OnlineTimeDay = OnlineTimeMillis /(24*60*60*1000F);
        }


        System.out.println("Seconds"+OnlineTimeSec);
        System.out.println("Minutes"+OnlineTimeMin);
        System.out.println("Hours"+OnlineTimeHour);
        System.out.println("Days"+OnlineTimeDay);

    }



    public static void Uptimestop(){

        startTime = 0;
        OnlineTimeMillis = 0;       
        OnlineTimeSec = 0;
        OnlineTimeMin = 0;
        OnlineTimeHour = 0;
        OnlineTimeDay = 0;
    }


}
然后,最后但并非最不重要的一点是,我会在聊天中获得信息,在我的主课中有以下几行:

if (message.equalsIgnoreCase("!uptime")) {
    sendMessage(channel," Stream is running for: "+UptimeCount.OnlineTimeDay +" Days, "+UptimeCount.OnlineTimeHour +" Hours. "+UptimeCount.OnlineTimeMin +" Minutes and " +UptimeCount.OnlineTimeSec +" Seconds.");
}
我还没有测试它,但我想我必须格式化浮点的ms输出,然后它应该可以工作,对吗?

可以用来表示持续时间和时间:

// it will give you  current time in mille seconds

long startTime = System.currentTimeMillis();


// Mill second diffrence 

long  OnlineTimeMillis = System.currentTimeMillis()-startTime;


// time diff in mille seconds since  you are online 

float OnlineTimeSec = OnlineTimeMillis /1000F;

// time diff in Minutes  since  you are  online
float  OnlineTimeMin = OnlineTimeMillis /(60*1000F);

// time diff in Hours  since  you are online
float OnlineTimeHour = OnlineTimeMillis /(60*60*1000F);

// time diff in days  since  you are online  
float OnlineTimeDay = OnlineTimeMillis /(24*60*60*1000F);
// at startup of the stream
DateTime startedAt = DateTime.now();

// later
Duration elapsed = new Duration(startedAt, DateTime.now());
并且可以使用所描述的解决方案格式化输出,以获得人类可读的输出(即“1小时2分钟”)


还请检查,因为它有类似于
toStandardHours
toStandardMinutes
的方法,可用于显示经过的总小时数/分钟数/等(即“1小时62分钟”)。

如果可以使用番石榴,您有
StopWatch
为什么不编写自定义线程来不断递增此时间计数器,并在其中嵌入一个helper方法,告诉您计时器运行的秒、分钟、小时和天?将其设置为守护进程线程,使其在主应用程序未运行时不运行,而仅在主应用程序运行时运行。使用系统时钟检测经过的时间。使用Joda库获取适当的值以显示。我会查看它,谢谢@太棒了,所以你说我应该按照我的想法做一个简单的+1定时器的事情?如果是的话,我不明白你所说的“helper方法”或作为守护进程线程运行它是什么意思。我对java=P@ted还是相当陌生的,这是行不通的。机器人一直在线/运行,但一旦它在线,它就会自动连接到流,并且它应该开始计数,所以我不确定我是否可以告诉程序从那时开始获取系统时间?这看起来很有趣。谢谢我可以把这些东西放在一个方法中,这样我只能在机器人连接到流IRC时调用它,然后从那里开始计数?将上述内容保留在方法中,并在用户连接到stream@user3220962时在单独的线程中运行?我想是这样吧?将它打包到一个静态void xyz()中,这样我就可以在bot每秒连接时调用它,这样浮动就会得到更新,或者我的想法是错误的?用你的代码@user3220962gon更新你的问题,现在就写吧。给我几分钟,我会试试这个,因为我在上面试过的那一个并不完全符合我的需要:)