peter
2026-01-08 b82ea69a5ee885f0a24ae92be482fb63da92d859
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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<String> days = getAllDaysInMonth("2024-02");
        System.out.println(days);
    }
 
    public static List<String> getAllDaysInMonth(String yearMonth) {
        List<String> 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<String> 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;
    }
}