package com.nq.utils; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MarketUtils { public static void main(String[] args) { LocalDate date = LocalDate.of(2026, 7, 18); System.out.println("测试"+date.getYear()+"年"+date.getMonthValue()+"月"+date.getDayOfMonth()+"日"); if(isMarketClosed(date)){ System.out.println("测试结果:休市"); }else { System.out.println("测试结果:开市"); } List days = getAllDaysInMonth("2024-02"); System.out.println(days); } public static List getAllDaysInMonth(String yearMonth) { List days = new ArrayList<>(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); LocalDate month = LocalDate.parse(yearMonth + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd")); int daysInMonth = month.lengthOfMonth(); for (int day = 1; day <= daysInMonth; day++) { String dateStr = String.format("%s-%02d", yearMonth, day); days.add(dateStr); } return days; } // A股法定休市日期(示例年份,实际需每年更新) private static final List HOLIDAYS = Arrays.asList( "2026-01-01", "2026-01-02", "2026-01-03", "2026-02-15", "2026-02-16", "2026-02-17", "2026-02-18", "2026-02-19", "2026-02-20", "2026-02-21", "2026-02-22", "2026-02-23", "2026-04-04", "2026-04-05", "2026-04-06", "2026-05-01", "2026-05-02", "2026-05-03", "2026-05-04", "2026-05-05", "2026-06-19", "2026-06-20", "2026-06-21", "2026-09-25", "2026-09-26", "2026-09-27", "2026-10-01", "2026-10-02", "2026-10-03", "2026-10-04", "2026-10-05", "2026-10-06", "2026-10-07", "2026-10-08" ); /** * 判断A股是否休市 * @param date 待判断日期 * @return true:休市, false:开市 */ public static boolean isMarketClosed(LocalDate date) { // 周末休市 if (date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY) { return true; } // 法定节假日休市 if (HOLIDAYS.contains(date.toString())) { return true; } return false; } }