[Java]简单实现计时功能

在使用Mirai编写QQ机器人时,由于功能需要就编写了一个计时程序,用来说明运行时长

代码及思路如下:

long startTime = System.currentTimeMillis();//将开始时间赋给startTime,放在开始计时的地方,可添加相应关键词以配合完成功能
long endTime = System.currentTimeMillis();//结束的时间,放在结束计时的地方
long usedTime_s = (endTime - startTime) / 1000;//1秒=1000毫秒,取出秒数
//初始化分钟,小时,天数
long usedTime_m = 0;//初始化分钟
long usedTime_h = 0;//初始化小时
long usedTime_d = 0;//初始化天数

String usedTime;//将usedTime引入下面while循环的范围
while (true) {
           //如果使用的秒数 >= 60秒,则向usedTime_m进一,自己减60
            if (usedTime_s >= 60) {
                usedTime_s -= 60;
                usedTime_m += 1;
            //如果使用的分钟数 >= 60分钟,则向usedTime_h进一,自己减60
            } else if (usedTime_m >= 60) {
                usedTime_m -= 60;
                usedTime_h += 1;
            //如果使用的小时数 >= 24小时,则向usedTime_d进一,自己减24
            } else if (usedTime_h >= 24) {
                usedTime_h -= 24;
                usedTime_d += 1;
            //如果usedTime_s < 60 ,也就是秒数 >=60 的部分已经全部处理完了,其他的分钟,小时,天数也就处理完了,这时可以拼接字符串,退出循环
            } else if (usedTime_s < 60) {
                usedTime = usedTime_d + "天" + usedTime_h + "小时" + usedTime_m + "分钟" + usedTime_s + "秒";
                break;
            }
        }

全部代码

public static void main(String[] args) {
        long startTime = System.currentTimeMillis();

        long endTime = System.currentTimeMillis();
        long usedTime_s = (endTime - startTime) / 1000;
        long usedTime_m = 0;
        long usedTime_h = 0;
        long usedTime_d = 0;
        String usedTime;
        while (true) {
            if (usedTime_s >= 60) {
                usedTime_s -= 60;
                usedTime_m += 1;
            } else if (usedTime_m >= 60) {
                usedTime_m -= 60;
                usedTime_h += 1;
            } else if (usedTime_h >= 24) {
                usedTime_h -= 24;
                usedTime_d += 1;
            } else if (usedTime_s < 60) {
                usedTime = usedTime_d + "天" + usedTime_h + "小时" + usedTime_m + "分钟" + usedTime_s + "秒";
                break;
            }       
        }
        System.out.println(usedTime);
}

加入Thread.sleep();

public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        long endTime = System.currentTimeMillis();
        long usedTime_s = (endTime - startTime) / 1000;
        long usedTime_m = 0;
        long usedTime_h = 0;
        long usedTime_d = 0;
        String usedTime;
        while (true) {
            if (usedTime_s >= 60) {
                usedTime_s -= 60;
                usedTime_m += 1;
            } else if (usedTime_m >= 60) {
                usedTime_m -= 60;
                usedTime_h += 1;
            } else if (usedTime_h >= 24) {
                usedTime_h -= 24;
                usedTime_d += 1;
            } else if (usedTime_s <= 60) {
                usedTime = usedTime_d + "天" + usedTime_h + "小时" + usedTime_m + "分钟" + usedTime_s + "秒";
                break;
            }
        }
        System.out.println(usedTime);
    }

最后输出

0天0小时0分钟5秒

测试成功!!!

只是介绍我的方法思路,若代码有问题可及时指出。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java Swing中实现计时功能,你可以使用`javax.swing.Timer`类来完成。下面是一个简单的示例代码: ```java import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CountdownTimer extends JFrame { private Timer timer; private JLabel timerLabel; private int timeRemaining; public CountdownTimer(int seconds) { timeRemaining = seconds; timerLabel = new JLabel(); timerLabel.setHorizontalAlignment(SwingConstants.CENTER); timerLabel.setFont(timerLabel.getFont().deriveFont(48.0f)); updateTimerLabel(); timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (timeRemaining > 0) { timeRemaining--; updateTimerLabel(); } else { timer.stop(); JOptionPane.showMessageDialog(CountdownTimer.this, "倒计时结束"); } } }); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("倒计时"); setSize(300, 200); setLocationRelativeTo(null); getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); getContentPane().add(timerLabel); startTimer(); } private void updateTimerLabel() { int minutes = timeRemaining / 60; int seconds = timeRemaining % 60; timerLabel.setText(String.format("%02d:%02d", minutes, seconds)); } public void startTimer() { timer.start(); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { CountdownTimer countdownTimer = new CountdownTimer(60); // 设置倒计时时间为60秒 countdownTimer.setVisible(true); } }); } } ``` 这个示例代码创建了一个带有倒计时功能的Swing窗口,使用`javax.swing.Timer`类来实现计时功能。在构造函数中,设置了倒计时的初始时间,并创建了一个`JLabel`来显示倒计时时间。通过在`Timer`的`actionPerformed`方法中更新时间并更新`JLabel`来实现计时的效果。在倒计时结束时,弹出一个提示框来通知用户。最后,通过调用`startTimer`方法来开始倒计时。你可以根据自己的需求调整代码并添加其他的Swing组件来完成更复杂的倒计时功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值