You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何将ArrayList存储的输入分割为日期和字符串并进行比较

完整实现代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Locale;

// 任务实体类,用于统一存储日期和任务内容
class Task {
    private LocalDate date;
    private String content;

    public Task(LocalDate date, String content) {
        this.date = date;
        this.content = content;
    }

    public LocalDate getDate() {
        return date;
    }

    public String getContent() {
        return content;
    }
}

public class TestClass {
    // 全局日期格式化器,指定格式+英文Locale适配英文月份缩写解析
    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("d MMM yyyy", Locale.ENGLISH);

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Task> taskList = new ArrayList<>();
        // 获取系统当前日期
        LocalDate today = LocalDate.now();

        try {
            System.out.println("Enter : ");
            String input = br.readLine();
            // 限制拆分次数为2,避免任务内容含逗号时拆分出错
            String[] parts = input.split(",", 2);
            if (parts.length != 2) {
                System.out.println("输入格式错误,请按照「日期, 任务」格式输入");
                return;
            }
            // 解析输入的日期,去除首尾空格
            LocalDate taskDate = LocalDate.parse(parts[0].trim(), DATE_FORMATTER);
            String taskContent = parts[1].trim();
            // 存入任务列表
            taskList.add(new Task(taskDate, taskContent));

            // 检索匹配当日的任务
            System.out.println("--------------");
            boolean hasTodayTask = false;
            for (Task task : taskList) {
                if (task.getDate().isEqual(today)) {
                    System.out.println("今日任务:" + task.getContent());
                    hasTodayTask = true;
                    break;
                }
            }
            if (!hasTodayTask) {
                System.out.println("当前日期无任务");
            }

        } catch (IOException e) {
            System.out.println("输入读取失败:" + e.getMessage());
        } catch (DateTimeParseException e) {
            System.out.println("日期格式错误,请按照 D MMM YYYY 格式输入,例如 10 Nov 2021");
        }
    }
}

关键实现说明

  • 用java.time包下的LocalDate处理日期,避免传统Date类的线程安全、格式转换复杂问题
  • 日期格式化器显式指定Locale.ENGLISH,保证中文环境下也能正常解析英文月份缩写
  • 新增输入格式、日期格式的异常捕获逻辑,容错性更高
  • 拆分输入时限制拆分次数为2,支持任务内容中包含逗号的场景

内容的提问来源于stack exchange,提问作者mrwahl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:45:03