分享一个下班倒计时(Java版本)

就在昨天发了一个通知,这是本程序员最无声的反击
通知大意就是,我们上班来得越来越晚,下班越来越早,现在领导不好发话让我们加班,那就让我们准时到工位上班。也就是在八点半之前,吃完早餐,上完厕所,接完水。从八点半那一分钟开始,就老老实实的在工位上班。

既然在上班期间,不吃早餐,不接水,不上厕所,那么在午饭,午休,下班期间不处理工作的事,也理所应当了。

于是我决定,以后准时在工位上班,当然也一定准时的吃午饭,午睡,下班,绝不用我午饭的时间多写一行代码,绝不用下班时间多写两行代码。

效果图如下
在这里插入图片描述
代码如下

import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class CountdownPlugin extends JFrame {
	
	private static final long serialVersionUID = 1L;
	
	private JLabel 吃饭Label;
	private JLabel 午睡Label;
	private JLabel 下班Label;
	
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            CountdownPlugin plugin = new CountdownPlugin();
            plugin.setVisible(true);
        });
    }

    public CountdownPlugin() {
        // 设置窗口标题
        setTitle("打工人的一天");
        // 设置窗口大小
        setSize(300, 150);
        // 设置窗口关闭操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 设置布局管理器
        setLayout(new FlowLayout());

        吃饭Label = new JLabel();
        吃饭Label.setFont(new Font("宋体", Font.BOLD, 24));
        午睡Label = new JLabel();
        午睡Label.setFont(new Font("宋体", Font.BOLD, 24));
        下班Label = new JLabel();
        下班Label.setFont(new Font("宋体", Font.BOLD, 24));
        add(吃饭Label);
        add(午睡Label);
        add(下班Label);

        // 启动倒计时
        startCountdown();
    }

    private void startCountdown() {
        Timer timer = new Timer(1000, e -> {
        	long 吃饭 = calculateRemainingTime(11, 40);
        	if (吃饭 > 0) {
        		String timeString = formatTime(吃饭);
        		吃饭Label.setText("午饭倒计时:" + timeString);
        	} 
        	long 午睡 = calculateRemainingTime(12, 30);
        	if (午睡 > 0) {
        		String timeString = formatTime(午睡);
        		午睡Label.setText("午睡倒计时:" + timeString);
        	} 
            long 下班 = calculateRemainingTime(17, 0);
            if (下班 > 0) {
                String timeString = formatTime(下班);
                下班Label.setText("下班倒计时:" + timeString);
            } else {
            	下班Label.setText("加班使我快乐");
                ((Timer) e.getSource()).stop();
            }
        });
        timer.start();
    }

    private long calculateRemainingTime(int hourm, int minute) {
        Date now = new Date();
        Date endOfWork = getTargetData(hourm, minute);
        return endOfWork.getTime() - now.getTime();
    }
    
    private Date getTargetData(int hourm, int minute) {
        Date now = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(now);
        calendar.set(Calendar.HOUR_OF_DAY, hourm);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    private String formatTime(long time) {
        SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
        format.setTimeZone(java.util.TimeZone.getTimeZone("GMT"));
        return format.format(new Date(time));
    }
}

需要修改下班时间的看这个方法的参数
在这里插入图片描述

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值