Java如何从ArrayList存储的yyyy-MM-dd字符串日期获取对应星期几
解决方案
完全可以实现转换,Java 8及以上版本可以直接用内置的java.time包完成,无需引入第三方依赖,也避免了旧版Date、Calendar类的线程安全问题与易用性缺陷。
核心实现步骤
- 定义匹配
yyyy-MM-dd格式的日期解析器 - 定义输出英文全称星期的格式化器,必须指定英文Locale,否则输出会随运行环境默认语言变化
- 遍历ArrayList中的日期字符串,依次完成解析与格式化转换
完整代码示例
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Locale; public class DateToWeekday { public static void main(String[] args) { // 示例ArrayList ArrayList<String> dateList = new ArrayList<>(); dateList.add("2021-04-01"); dateList.add("2021-05-03"); dateList.add("2020-06-17"); // 定义格式化器 DateTimeFormatter dateParser = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter weekdayFormatter = DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH); // 遍历转换 for (String dateStr : dateList) { LocalDate date = LocalDate.parse(dateStr, dateParser); String weekday = date.format(weekdayFormatter); System.out.println(dateStr + " 对应的星期为:" + weekday); } } }
输出结果
2021-04-01 对应的星期为:Thursday 2021-05-03 对应的星期为:Monday 2020-06-17 对应的星期为:Wednesday
注意事项
- 如果输入的日期字符串可能存在格式错误,建议添加
try-catch捕获DateTimeParseException异常,避免程序崩溃 - 若需要输出其他语言的星期名称,修改
Locale参数即可,比如Locale.CHINA会输出中文星期名
内容的提问来源于stack exchange,提问作者Brian McCanaugh
相关产品推荐
相关产品推荐

