Java生成2022年的工作日列表,看看哪天放假

先写一个工作日类型,成员是当天的日期和是否工作。


class WorkDay{
    Calendar calendar;
    boolean work;

    public WorkDay(Calendar calendar, boolean work) {
        this.calendar = calendar;
        this.work = work;
    }

    @Override
    public String toString() {
        return "WorkDay{" +
                "calendar=" + Main.get_string(calendar) +
                ", work=" + work +
                ", 星期" + (calendar.get(Calendar.DAY_OF_WEEK) - 1) +
                '}';
    }

    public Calendar getCalendar() {
        return calendar;
    }

    public void setCalendar(Calendar calendar) {
        this.calendar = calendar;
    }

    public boolean isWork() {
        return work;
    }

    public void setWork(boolean work) {
        this.work = work;
    }

    public String toJsonString(){
        return " {\"date\":\"" + Main.get_string(this.calendar) + "\", "+"\"work\":\""+ this.work +"\"}";
    }
}

然后随便写写就做完了。

public class Main {

    public static boolean isNaturalWork(Calendar calendar) {
        int num = calendar.get(Calendar.DAY_OF_WEEK);
        if(num == Calendar.SATURDAY || num == Calendar.SUNDAY) return false;
        return true;
    }

    public static String get_string(Calendar calendar){
        return (new SimpleDateFormat("yyyy-MM-dd")).format(calendar.getTime());
    }

    public static Map<String,Boolean> arrangeWorkDays(){

        Map<String,Boolean> res = new HashMap<>();

        //国务院小程序放假安排
        //false 不工作
        //true 工作
        res.put("2022-01-01",false);
        res.put("2022-01-02",false);
        res.put("2022-01-03",false);
        res.put("2022-01-29",true);
        res.put("2022-01-30",true);
        res.put("2022-01-31",false);

        res.put("2022-02-01",false);
        res.put("2022-02-02",false);
        res.put("2022-02-03",false);
        res.put("2022-02-04",false);
        res.put("2022-02-05",false);
        res.put("2022-02-06",false);

        res.put("2022-04-02",true);
        res.put("2022-04-03",false);
        res.put("2022-04-04",false);
        res.put("2022-04-05",false);
        res.put("2022-04-24",true);
        res.put("2022-04-30",false);

        res.put("2022-05-01",false);
        res.put("2022-05-02",false);
        res.put("2022-05-03",false);
        res.put("2022-05-04",false);
        res.put("2022-05-07",true);


        res.put("2022-06-03",false);
        res.put("2022-06-04",false);
        res.put("2022-06-05",false);

        res.put("2022-09-10",false);
        res.put("2022-09-11",false);
        res.put("2022-09-12",false);

        res.put("2022-10-01",false);
        res.put("2022-10-02",false);
        res.put("2022-10-03",false);
        res.put("2022-10-04",false);
        res.put("2022-10-05",false);
        res.put("2022-10-06",false);
        res.put("2022-10-07",false);
        res.put("2022-10-08",true);
        res.put("2022-10-09",true);

        return res;
    }

    public static void main(String[] args) {

        Calendar cal_start = new GregorianCalendar(2022,Calendar.JANUARY,1);


        Calendar cal_end = new GregorianCalendar(2023,Calendar.JANUARY,1);
        String str_end = get_string(cal_end);

        List<WorkDay> workDays = new ArrayList<>();
        Map<String,Boolean> arrangement = arrangeWorkDays();

        while(!get_string(cal_start).equals(str_end)){

            String dayString = get_string(cal_start);

            WorkDay w = new WorkDay((Calendar) cal_start.clone(),isNaturalWork(cal_start));

            if(arrangement.get(dayString) != null){
                w.setWork(arrangement.get(dayString));
                System.out.println(w.toJsonString());
            }

            workDays.add(w);

            cal_start.add(Calendar.DATE,1);
        }

        StringBuilder sb = new StringBuilder();
        sb.append("[");
        sb.append(workDays.get(0).toJsonString());
        for(int i = 1; i < workDays.size(); i++){
            WorkDay ww = workDays.get(i);
            sb.append(",");
            sb.append(ww.toJsonString());
        }
        sb.append("]");


        try {
            BufferedWriter out = new BufferedWriter (new OutputStreamWriter(new FileOutputStream("workdays.json"), "UTF-8"));
            out.write(sb.toString());
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

结果看看,输出了一个文件

 

### 解决PyCharm无法加载Conda虚拟环境的方法 #### 配置设置 为了使 PyCharm 能够成功识别并使用 Conda 创建的虚拟环境,需确保 Anaconda 的路径已正确添加至系统的环境变量中[^1]。这一步骤至关重要,因为只有当 Python 解释器及其关联工具被加入 PATH 后,IDE 才能顺利找到它们。 对于 Windows 用户而言,在安装 Anaconda 时,默认情况下会询问是否将它添加到系统路径里;如果当时选择了否,则现在应该手动完成此操作。具体做法是在“高级系统设置”的“环境变量”选项内编辑 `Path` 变量,追加 Anaconda 安装目录下的 Scripts 文件夹位置。 另外,建议每次新建项目前都通过命令行先激活目标 conda env: ```bash conda activate myenvname ``` 接着再启动 IDE 进入工作区,这样有助于减少兼容性方面的问题发生概率。 #### 常见错误及修复方法 ##### 错误一:未发现任何解释器 症状表现为打开 PyCharm 新建工程向导页面找不到由 Conda 构建出来的 interpreter 列表项。此时应前往 Preferences/Settings -> Project:...->Python Interpreter 下方点击齿轮图标选择 Add...按钮来指定自定义的位置。按照提示浏览定位到对应版本 python.exe 的绝对地址即可解决问题。 ##### 错误二:权限不足导致 DLL 加载失败 有时即使指定了正确的解释器路径,仍可能遇到由于缺乏适当的操作系统级许可而引发的功能缺失现象。特别是涉及到调用某些特定类型的动态链接库 (Dynamic Link Library, .dll) 时尤为明显。因此拥有管理员身份执行相关动作显得尤为重要——无论是从终端还是图形界面触发创建新 venv 流程均如此处理能够有效规避此类隐患。 ##### 错误三:网络连接异常引起依赖下载超时 部分开发者反馈过因网速慢或者其他因素造成 pip install 操作中途断开进而影响整个项目的初始化进度条卡住的情况。对此可尝试调整镜像源加速获取速度或是离线模式预先准备好所需资源包后再继续后续步骤。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值