@qingwu-ui/holiday-data 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs ADDED
@@ -0,0 +1,1444 @@
1
+ //#region data.json
2
+ var data_default = {
3
+ schemaVersion: 1,
4
+ updatedAt: "2026-10-25",
5
+ years: [
6
+ {
7
+ "schemaVersion": 1,
8
+ "year": 2024,
9
+ "updatedAt": "2026-10-25",
10
+ "sources": [{
11
+ "title": "2024 年部分节假日安排公告",
12
+ "publisher": "国务院办公厅",
13
+ "url": "https://www.gov.cn/zhengce/zhengceku/202310/content_6911528.htm",
14
+ "accessedAt": "2026-10-25"
15
+ }],
16
+ "days": [
17
+ {
18
+ "name": "元旦",
19
+ "date": "2024-01-01",
20
+ "isOffDay": true
21
+ },
22
+ {
23
+ "name": "春节",
24
+ "date": "2024-02-04",
25
+ "isOffDay": false
26
+ },
27
+ {
28
+ "name": "春节",
29
+ "date": "2024-02-10",
30
+ "isOffDay": true
31
+ },
32
+ {
33
+ "name": "春节",
34
+ "date": "2024-02-11",
35
+ "isOffDay": true
36
+ },
37
+ {
38
+ "name": "春节",
39
+ "date": "2024-02-12",
40
+ "isOffDay": true
41
+ },
42
+ {
43
+ "name": "春节",
44
+ "date": "2024-02-13",
45
+ "isOffDay": true
46
+ },
47
+ {
48
+ "name": "春节",
49
+ "date": "2024-02-14",
50
+ "isOffDay": true
51
+ },
52
+ {
53
+ "name": "春节",
54
+ "date": "2024-02-15",
55
+ "isOffDay": true
56
+ },
57
+ {
58
+ "name": "春节",
59
+ "date": "2024-02-16",
60
+ "isOffDay": true
61
+ },
62
+ {
63
+ "name": "春节",
64
+ "date": "2024-02-17",
65
+ "isOffDay": true
66
+ },
67
+ {
68
+ "name": "春节",
69
+ "date": "2024-02-18",
70
+ "isOffDay": false
71
+ },
72
+ {
73
+ "name": "清明节",
74
+ "date": "2024-04-04",
75
+ "isOffDay": true
76
+ },
77
+ {
78
+ "name": "清明节",
79
+ "date": "2024-04-05",
80
+ "isOffDay": true
81
+ },
82
+ {
83
+ "name": "清明节",
84
+ "date": "2024-04-06",
85
+ "isOffDay": true
86
+ },
87
+ {
88
+ "name": "清明节",
89
+ "date": "2024-04-07",
90
+ "isOffDay": false
91
+ },
92
+ {
93
+ "name": "劳动节",
94
+ "date": "2024-04-28",
95
+ "isOffDay": false
96
+ },
97
+ {
98
+ "name": "劳动节",
99
+ "date": "2024-05-01",
100
+ "isOffDay": true
101
+ },
102
+ {
103
+ "name": "劳动节",
104
+ "date": "2024-05-02",
105
+ "isOffDay": true
106
+ },
107
+ {
108
+ "name": "劳动节",
109
+ "date": "2024-05-03",
110
+ "isOffDay": true
111
+ },
112
+ {
113
+ "name": "劳动节",
114
+ "date": "2024-05-04",
115
+ "isOffDay": true
116
+ },
117
+ {
118
+ "name": "劳动节",
119
+ "date": "2024-05-05",
120
+ "isOffDay": true
121
+ },
122
+ {
123
+ "name": "劳动节",
124
+ "date": "2024-05-11",
125
+ "isOffDay": false
126
+ },
127
+ {
128
+ "name": "端午节",
129
+ "date": "2024-06-10",
130
+ "isOffDay": true
131
+ },
132
+ {
133
+ "name": "中秋节",
134
+ "date": "2024-09-14",
135
+ "isOffDay": false
136
+ },
137
+ {
138
+ "name": "中秋节",
139
+ "date": "2024-09-15",
140
+ "isOffDay": true
141
+ },
142
+ {
143
+ "name": "中秋节",
144
+ "date": "2024-09-16",
145
+ "isOffDay": true
146
+ },
147
+ {
148
+ "name": "中秋节",
149
+ "date": "2024-09-17",
150
+ "isOffDay": true
151
+ },
152
+ {
153
+ "name": "国庆节",
154
+ "date": "2024-09-29",
155
+ "isOffDay": false
156
+ },
157
+ {
158
+ "name": "国庆节",
159
+ "date": "2024-10-01",
160
+ "isOffDay": true
161
+ },
162
+ {
163
+ "name": "国庆节",
164
+ "date": "2024-10-02",
165
+ "isOffDay": true
166
+ },
167
+ {
168
+ "name": "国庆节",
169
+ "date": "2024-10-03",
170
+ "isOffDay": true
171
+ },
172
+ {
173
+ "name": "国庆节",
174
+ "date": "2024-10-04",
175
+ "isOffDay": true
176
+ },
177
+ {
178
+ "name": "国庆节",
179
+ "date": "2024-10-05",
180
+ "isOffDay": true
181
+ },
182
+ {
183
+ "name": "国庆节",
184
+ "date": "2024-10-06",
185
+ "isOffDay": true
186
+ },
187
+ {
188
+ "name": "国庆节",
189
+ "date": "2024-10-07",
190
+ "isOffDay": true
191
+ },
192
+ {
193
+ "name": "国庆节",
194
+ "date": "2024-10-12",
195
+ "isOffDay": false
196
+ }
197
+ ]
198
+ },
199
+ {
200
+ "schemaVersion": 1,
201
+ "year": 2025,
202
+ "updatedAt": "2026-10-25",
203
+ "sources": [{
204
+ "title": "2025 年部分节假日安排公告",
205
+ "publisher": "国务院办公厅",
206
+ "url": "https://www.gov.cn/zhengce/zhengceku/202411/content_6986383.htm",
207
+ "accessedAt": "2026-10-25"
208
+ }],
209
+ "days": [
210
+ {
211
+ "name": "元旦",
212
+ "date": "2025-01-01",
213
+ "isOffDay": true
214
+ },
215
+ {
216
+ "name": "春节",
217
+ "date": "2025-01-26",
218
+ "isOffDay": false
219
+ },
220
+ {
221
+ "name": "春节",
222
+ "date": "2025-01-28",
223
+ "isOffDay": true
224
+ },
225
+ {
226
+ "name": "春节",
227
+ "date": "2025-01-29",
228
+ "isOffDay": true
229
+ },
230
+ {
231
+ "name": "春节",
232
+ "date": "2025-01-30",
233
+ "isOffDay": true
234
+ },
235
+ {
236
+ "name": "春节",
237
+ "date": "2025-01-31",
238
+ "isOffDay": true
239
+ },
240
+ {
241
+ "name": "春节",
242
+ "date": "2025-02-01",
243
+ "isOffDay": true
244
+ },
245
+ {
246
+ "name": "春节",
247
+ "date": "2025-02-02",
248
+ "isOffDay": true
249
+ },
250
+ {
251
+ "name": "春节",
252
+ "date": "2025-02-03",
253
+ "isOffDay": true
254
+ },
255
+ {
256
+ "name": "春节",
257
+ "date": "2025-02-04",
258
+ "isOffDay": true
259
+ },
260
+ {
261
+ "name": "春节",
262
+ "date": "2025-02-08",
263
+ "isOffDay": false
264
+ },
265
+ {
266
+ "name": "清明节",
267
+ "date": "2025-04-04",
268
+ "isOffDay": true
269
+ },
270
+ {
271
+ "name": "清明节",
272
+ "date": "2025-04-05",
273
+ "isOffDay": true
274
+ },
275
+ {
276
+ "name": "清明节",
277
+ "date": "2025-04-06",
278
+ "isOffDay": true
279
+ },
280
+ {
281
+ "name": "劳动节",
282
+ "date": "2025-04-27",
283
+ "isOffDay": false
284
+ },
285
+ {
286
+ "name": "劳动节",
287
+ "date": "2025-05-01",
288
+ "isOffDay": true
289
+ },
290
+ {
291
+ "name": "劳动节",
292
+ "date": "2025-05-02",
293
+ "isOffDay": true
294
+ },
295
+ {
296
+ "name": "劳动节",
297
+ "date": "2025-05-03",
298
+ "isOffDay": true
299
+ },
300
+ {
301
+ "name": "劳动节",
302
+ "date": "2025-05-04",
303
+ "isOffDay": true
304
+ },
305
+ {
306
+ "name": "劳动节",
307
+ "date": "2025-05-05",
308
+ "isOffDay": true
309
+ },
310
+ {
311
+ "name": "端午节",
312
+ "date": "2025-05-31",
313
+ "isOffDay": true
314
+ },
315
+ {
316
+ "name": "端午节",
317
+ "date": "2025-06-01",
318
+ "isOffDay": true
319
+ },
320
+ {
321
+ "name": "端午节",
322
+ "date": "2025-06-02",
323
+ "isOffDay": true
324
+ },
325
+ {
326
+ "name": "国庆节、中秋节",
327
+ "date": "2025-09-28",
328
+ "isOffDay": false
329
+ },
330
+ {
331
+ "name": "国庆节、中秋节",
332
+ "date": "2025-10-01",
333
+ "isOffDay": true
334
+ },
335
+ {
336
+ "name": "国庆节、中秋节",
337
+ "date": "2025-10-02",
338
+ "isOffDay": true
339
+ },
340
+ {
341
+ "name": "国庆节、中秋节",
342
+ "date": "2025-10-03",
343
+ "isOffDay": true
344
+ },
345
+ {
346
+ "name": "国庆节、中秋节",
347
+ "date": "2025-10-04",
348
+ "isOffDay": true
349
+ },
350
+ {
351
+ "name": "国庆节、中秋节",
352
+ "date": "2025-10-05",
353
+ "isOffDay": true
354
+ },
355
+ {
356
+ "name": "国庆节、中秋节",
357
+ "date": "2025-10-06",
358
+ "isOffDay": true
359
+ },
360
+ {
361
+ "name": "国庆节、中秋节",
362
+ "date": "2025-10-07",
363
+ "isOffDay": true
364
+ },
365
+ {
366
+ "name": "国庆节、中秋节",
367
+ "date": "2025-10-08",
368
+ "isOffDay": true
369
+ },
370
+ {
371
+ "name": "国庆节、中秋节",
372
+ "date": "2025-10-11",
373
+ "isOffDay": false
374
+ }
375
+ ]
376
+ },
377
+ {
378
+ "schemaVersion": 1,
379
+ "year": 2026,
380
+ "updatedAt": "2026-10-25",
381
+ "sources": [{
382
+ "title": "2026 年部分节假日安排公告",
383
+ "publisher": "国务院办公厅",
384
+ "url": "https://www.gov.cn/zhengce/zhengceku/202511/content_7047091.htm",
385
+ "accessedAt": "2026-10-25"
386
+ }],
387
+ "days": [
388
+ {
389
+ "name": "元旦",
390
+ "date": "2026-01-01",
391
+ "isOffDay": true
392
+ },
393
+ {
394
+ "name": "元旦",
395
+ "date": "2026-01-02",
396
+ "isOffDay": true
397
+ },
398
+ {
399
+ "name": "元旦",
400
+ "date": "2026-01-03",
401
+ "isOffDay": true
402
+ },
403
+ {
404
+ "name": "元旦",
405
+ "date": "2026-01-04",
406
+ "isOffDay": false
407
+ },
408
+ {
409
+ "name": "春节",
410
+ "date": "2026-02-14",
411
+ "isOffDay": false
412
+ },
413
+ {
414
+ "name": "春节",
415
+ "date": "2026-02-15",
416
+ "isOffDay": true
417
+ },
418
+ {
419
+ "name": "春节",
420
+ "date": "2026-02-16",
421
+ "isOffDay": true
422
+ },
423
+ {
424
+ "name": "春节",
425
+ "date": "2026-02-17",
426
+ "isOffDay": true
427
+ },
428
+ {
429
+ "name": "春节",
430
+ "date": "2026-02-18",
431
+ "isOffDay": true
432
+ },
433
+ {
434
+ "name": "春节",
435
+ "date": "2026-02-19",
436
+ "isOffDay": true
437
+ },
438
+ {
439
+ "name": "春节",
440
+ "date": "2026-02-20",
441
+ "isOffDay": true
442
+ },
443
+ {
444
+ "name": "春节",
445
+ "date": "2026-02-21",
446
+ "isOffDay": true
447
+ },
448
+ {
449
+ "name": "春节",
450
+ "date": "2026-02-22",
451
+ "isOffDay": true
452
+ },
453
+ {
454
+ "name": "春节",
455
+ "date": "2026-02-23",
456
+ "isOffDay": true
457
+ },
458
+ {
459
+ "name": "春节",
460
+ "date": "2026-02-28",
461
+ "isOffDay": false
462
+ },
463
+ {
464
+ "name": "清明节",
465
+ "date": "2026-04-04",
466
+ "isOffDay": true
467
+ },
468
+ {
469
+ "name": "清明节",
470
+ "date": "2026-04-05",
471
+ "isOffDay": true
472
+ },
473
+ {
474
+ "name": "清明节",
475
+ "date": "2026-04-06",
476
+ "isOffDay": true
477
+ },
478
+ {
479
+ "name": "劳动节",
480
+ "date": "2026-05-01",
481
+ "isOffDay": true
482
+ },
483
+ {
484
+ "name": "劳动节",
485
+ "date": "2026-05-02",
486
+ "isOffDay": true
487
+ },
488
+ {
489
+ "name": "劳动节",
490
+ "date": "2026-05-03",
491
+ "isOffDay": true
492
+ },
493
+ {
494
+ "name": "劳动节",
495
+ "date": "2026-05-04",
496
+ "isOffDay": true
497
+ },
498
+ {
499
+ "name": "劳动节",
500
+ "date": "2026-05-05",
501
+ "isOffDay": true
502
+ },
503
+ {
504
+ "name": "劳动节",
505
+ "date": "2026-05-09",
506
+ "isOffDay": false
507
+ },
508
+ {
509
+ "name": "端午节",
510
+ "date": "2026-06-19",
511
+ "isOffDay": true
512
+ },
513
+ {
514
+ "name": "端午节",
515
+ "date": "2026-06-20",
516
+ "isOffDay": true
517
+ },
518
+ {
519
+ "name": "端午节",
520
+ "date": "2026-06-21",
521
+ "isOffDay": true
522
+ },
523
+ {
524
+ "name": "国庆节",
525
+ "date": "2026-09-20",
526
+ "isOffDay": false
527
+ },
528
+ {
529
+ "name": "中秋节",
530
+ "date": "2026-09-25",
531
+ "isOffDay": true
532
+ },
533
+ {
534
+ "name": "中秋节",
535
+ "date": "2026-09-26",
536
+ "isOffDay": true
537
+ },
538
+ {
539
+ "name": "中秋节",
540
+ "date": "2026-09-27",
541
+ "isOffDay": true
542
+ },
543
+ {
544
+ "name": "国庆节",
545
+ "date": "2026-10-01",
546
+ "isOffDay": true
547
+ },
548
+ {
549
+ "name": "国庆节",
550
+ "date": "2026-10-02",
551
+ "isOffDay": true
552
+ },
553
+ {
554
+ "name": "国庆节",
555
+ "date": "2026-10-03",
556
+ "isOffDay": true
557
+ },
558
+ {
559
+ "name": "国庆节",
560
+ "date": "2026-10-04",
561
+ "isOffDay": true
562
+ },
563
+ {
564
+ "name": "国庆节",
565
+ "date": "2026-10-05",
566
+ "isOffDay": true
567
+ },
568
+ {
569
+ "name": "国庆节",
570
+ "date": "2026-10-06",
571
+ "isOffDay": true
572
+ },
573
+ {
574
+ "name": "国庆节",
575
+ "date": "2026-10-07",
576
+ "isOffDay": true
577
+ },
578
+ {
579
+ "name": "国庆节",
580
+ "date": "2026-10-10",
581
+ "isOffDay": false
582
+ }
583
+ ]
584
+ }
585
+ ],
586
+ festivals: [
587
+ {
588
+ "id": "spring-festival",
589
+ "name": "春节",
590
+ "rule": {
591
+ "calendar": "lunar",
592
+ "month": 1,
593
+ "day": 1
594
+ },
595
+ "description": {
596
+ "text": "农历新年的重要节日,寄托团圆与辞旧迎新的愿望。",
597
+ "sources": [{
598
+ "title": "春节",
599
+ "publisher": "北京市人民政府",
600
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cj/202303/t20230314_2936365.html",
601
+ "accessedAt": "2026-10-25"
602
+ }]
603
+ },
604
+ "origin": {
605
+ "text": "传统年节在长期的岁时生活中形成,庆祝时间与地方习惯有所差异。",
606
+ "sources": [{
607
+ "title": "春节",
608
+ "publisher": "北京市人民政府",
609
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cj/202303/t20230314_2936365.html",
610
+ "accessedAt": "2026-10-25"
611
+ }]
612
+ },
613
+ "customs": {
614
+ "text": "家人团聚、拜年、贴春联、守岁等。",
615
+ "sources": [{
616
+ "title": "春节",
617
+ "publisher": "北京市人民政府",
618
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cj/202303/t20230314_2936365.html",
619
+ "accessedAt": "2026-10-25"
620
+ }]
621
+ }
622
+ },
623
+ {
624
+ "id": "lantern-festival",
625
+ "name": "元宵节",
626
+ "rule": {
627
+ "calendar": "lunar",
628
+ "month": 1,
629
+ "day": 15
630
+ },
631
+ "description": {
632
+ "text": "农历正月十五的传统节日,又称上元节。",
633
+ "sources": [{
634
+ "title": "元宵节",
635
+ "publisher": "北京市人民政府",
636
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/yxj/202303/t20230303_2928272.html",
637
+ "accessedAt": "2026-10-25"
638
+ }]
639
+ },
640
+ "origin": {
641
+ "text": "元宵赏灯在长期的岁时庆典中逐步发展,各地形成不同灯会传统。",
642
+ "sources": [{
643
+ "title": "元宵节",
644
+ "publisher": "北京市人民政府",
645
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/yxj/202303/t20230303_2928272.html",
646
+ "accessedAt": "2026-10-25"
647
+ }]
648
+ },
649
+ "customs": {
650
+ "text": "赏灯、猜灯谜,吃元宵或汤圆。",
651
+ "sources": [{
652
+ "title": "元宵节",
653
+ "publisher": "北京市人民政府",
654
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/yxj/202303/t20230303_2928272.html",
655
+ "accessedAt": "2026-10-25"
656
+ }]
657
+ }
658
+ },
659
+ {
660
+ "id": "dragon-head",
661
+ "name": "龙抬头",
662
+ "rule": {
663
+ "calendar": "lunar",
664
+ "month": 2,
665
+ "day": 2
666
+ },
667
+ "description": {
668
+ "text": "农历二月初二的民俗节日,与春耕和祈愿丰收有关。",
669
+ "sources": [{
670
+ "title": "“二月二”龙抬头的民俗",
671
+ "publisher": "上海市虹口区人民政府",
672
+ "url": "https://www.shhk.gov.cn/xwzx/002008/002008040/20240312/cb401e90-eb94-4729-aaaf-f677c6fe6c3c.html",
673
+ "accessedAt": "2026-10-25"
674
+ }]
675
+ },
676
+ "origin": {
677
+ "text": "与农时、降雨和龙的文化意象相联系;相关龙王故事属于民间传说。",
678
+ "sources": [{
679
+ "title": "“二月二”龙抬头的民俗",
680
+ "publisher": "上海市虹口区人民政府",
681
+ "url": "https://www.shhk.gov.cn/xwzx/002008/002008040/20240312/cb401e90-eb94-4729-aaaf-f677c6fe6c3c.html",
682
+ "accessedAt": "2026-10-25"
683
+ }]
684
+ },
685
+ "customs": {
686
+ "text": "部分地区有理发、食用带“龙”名食物等习俗。",
687
+ "sources": [{
688
+ "title": "“二月二”龙抬头的民俗",
689
+ "publisher": "上海市虹口区人民政府",
690
+ "url": "https://www.shhk.gov.cn/xwzx/002008/002008040/20240312/cb401e90-eb94-4729-aaaf-f677c6fe6c3c.html",
691
+ "accessedAt": "2026-10-25"
692
+ }]
693
+ }
694
+ },
695
+ {
696
+ "id": "dragon-boat",
697
+ "name": "端午节",
698
+ "rule": {
699
+ "calendar": "lunar",
700
+ "month": 5,
701
+ "day": 5
702
+ },
703
+ "description": {
704
+ "text": "农历五月初五的传统节日,又称端阳。",
705
+ "sources": [{
706
+ "title": "端午节",
707
+ "publisher": "北京市人民政府",
708
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/dwj/202303/t20230303_2928401.html",
709
+ "accessedAt": "2026-10-25"
710
+ }]
711
+ },
712
+ "origin": {
713
+ "text": "具有禳灾祈福等多种文化内涵;纪念屈原是广泛流传的一种叙事,各地还有其他传说。",
714
+ "sources": [{
715
+ "title": "端午节",
716
+ "publisher": "北京市人民政府",
717
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/dwj/202303/t20230303_2928401.html",
718
+ "accessedAt": "2026-10-25"
719
+ }]
720
+ },
721
+ "customs": {
722
+ "text": "赛龙舟、吃粽子、悬挂艾草等,地域习俗各有不同。",
723
+ "sources": [{
724
+ "title": "端午节",
725
+ "publisher": "北京市人民政府",
726
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/dwj/202303/t20230303_2928401.html",
727
+ "accessedAt": "2026-10-25"
728
+ }]
729
+ }
730
+ },
731
+ {
732
+ "id": "qixi",
733
+ "name": "七夕节",
734
+ "rule": {
735
+ "calendar": "lunar",
736
+ "month": 7,
737
+ "day": 7
738
+ },
739
+ "description": {
740
+ "text": "农历七月初七,又称乞巧节、女儿节。",
741
+ "sources": [{
742
+ "title": "七夕节",
743
+ "publisher": "中国非物质文化遗产网·中国非物质文化遗产数字博物馆",
744
+ "url": "https://www.ihchina.cn/Article/Index/detail?id=14926",
745
+ "accessedAt": "2026-10-25"
746
+ }]
747
+ },
748
+ "origin": {
749
+ "text": "与织女信仰及乞巧活动有关;牛郎织女鹊桥相会属于民间传说。",
750
+ "sources": [{
751
+ "title": "七夕节",
752
+ "publisher": "中国非物质文化遗产网·中国非物质文化遗产数字博物馆",
753
+ "url": "https://www.ihchina.cn/Article/Index/detail?id=14926",
754
+ "accessedAt": "2026-10-25"
755
+ }]
756
+ },
757
+ "customs": {
758
+ "text": "穿针乞巧、制作巧果等,具体活动因地区而异。",
759
+ "sources": [{
760
+ "title": "七夕节",
761
+ "publisher": "中国非物质文化遗产网·中国非物质文化遗产数字博物馆",
762
+ "url": "https://www.ihchina.cn/Article/Index/detail?id=14926",
763
+ "accessedAt": "2026-10-25"
764
+ }]
765
+ }
766
+ },
767
+ {
768
+ "id": "zhongyuan",
769
+ "name": "中元节",
770
+ "rule": {
771
+ "calendar": "lunar",
772
+ "month": 7,
773
+ "day": 15
774
+ },
775
+ "description": {
776
+ "text": "俗称“七月半”,是部分地区追思先人的民俗时节。",
777
+ "sources": [{
778
+ "title": "中元节习俗",
779
+ "publisher": "天门市人民政府",
780
+ "url": "https://www.tianmen.gov.cn/zjtm/tmwh/tmms/201604/t20160419_1930964.shtml",
781
+ "accessedAt": "2026-10-25"
782
+ }]
783
+ },
784
+ "origin": {
785
+ "text": "祖先祭祀与相关宗教文化长期交融,过节日期和形式存在地域差异。",
786
+ "sources": [{
787
+ "title": "中元节习俗",
788
+ "publisher": "天门市人民政府",
789
+ "url": "https://www.tianmen.gov.cn/zjtm/tmwh/tmms/201604/t20160419_1930964.shtml",
790
+ "accessedAt": "2026-10-25"
791
+ }]
792
+ },
793
+ "customs": {
794
+ "text": "部分地区有祭祖、追思等活动,资料描述的是当地民俗。",
795
+ "sources": [{
796
+ "title": "中元节习俗",
797
+ "publisher": "天门市人民政府",
798
+ "url": "https://www.tianmen.gov.cn/zjtm/tmwh/tmms/201604/t20160419_1930964.shtml",
799
+ "accessedAt": "2026-10-25"
800
+ }]
801
+ }
802
+ },
803
+ {
804
+ "id": "mid-autumn",
805
+ "name": "中秋节",
806
+ "rule": {
807
+ "calendar": "lunar",
808
+ "month": 8,
809
+ "day": 15
810
+ },
811
+ "description": {
812
+ "text": "农历八月十五,以赏月、团圆为重要主题。",
813
+ "sources": [{
814
+ "title": "中秋节",
815
+ "publisher": "北京市人民政府",
816
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/zqj/202303/t20230303_2928408.html",
817
+ "accessedAt": "2026-10-25"
818
+ }]
819
+ },
820
+ "origin": {
821
+ "text": "与古代秋祀、拜月传统有关,后发展为广泛庆祝的节日;嫦娥奔月属于神话传说。",
822
+ "sources": [{
823
+ "title": "中秋节",
824
+ "publisher": "北京市人民政府",
825
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/zqj/202303/t20230303_2928408.html",
826
+ "accessedAt": "2026-10-25"
827
+ }]
828
+ },
829
+ "customs": {
830
+ "text": "赏月、吃月饼、家人团聚。",
831
+ "sources": [{
832
+ "title": "中秋节",
833
+ "publisher": "北京市人民政府",
834
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/zqj/202303/t20230303_2928408.html",
835
+ "accessedAt": "2026-10-25"
836
+ }]
837
+ }
838
+ },
839
+ {
840
+ "id": "double-ninth",
841
+ "name": "重阳节",
842
+ "rule": {
843
+ "calendar": "lunar",
844
+ "month": 9,
845
+ "day": 9
846
+ },
847
+ "description": {
848
+ "text": "农历九月初九的传统节日,也承载敬老主题。",
849
+ "sources": [{
850
+ "title": "重阳节",
851
+ "publisher": "北京市人民政府",
852
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cyj/202303/t20230303_2928420.html",
853
+ "accessedAt": "2026-10-25"
854
+ }]
855
+ },
856
+ "origin": {
857
+ "text": "“九九”重叠得名,传统岁时活动逐步形成登高、赏菊等风俗。",
858
+ "sources": [{
859
+ "title": "重阳节",
860
+ "publisher": "北京市人民政府",
861
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cyj/202303/t20230303_2928420.html",
862
+ "accessedAt": "2026-10-25"
863
+ }]
864
+ },
865
+ "customs": {
866
+ "text": "登高、赏菊、吃重阳糕、敬老。",
867
+ "sources": [{
868
+ "title": "重阳节",
869
+ "publisher": "北京市人民政府",
870
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cyj/202303/t20230303_2928420.html",
871
+ "accessedAt": "2026-10-25"
872
+ }]
873
+ }
874
+ },
875
+ {
876
+ "id": "laba",
877
+ "name": "腊八节",
878
+ "rule": {
879
+ "calendar": "lunar",
880
+ "month": 12,
881
+ "day": 8
882
+ },
883
+ "description": {
884
+ "text": "农历腊月初八,是春节前的重要民俗时节。",
885
+ "sources": [{
886
+ "title": "春节古时称“元旦”",
887
+ "publisher": "北京市人民政府",
888
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
889
+ "accessedAt": "2026-10-25"
890
+ }, {
891
+ "title": "“我们的节日”东城区非遗主题系列活动——腊八节",
892
+ "publisher": "北京市东城区人民政府",
893
+ "url": "https://www.bjdch.gov.cn/zwgk/jgdh/qzfzcbmdh/qwhhlyj/ggfwxxgk/202401/t20240124_3544532.html",
894
+ "accessedAt": "2026-10-25"
895
+ }]
896
+ },
897
+ "origin": {
898
+ "text": "传统腊祭与佛教成道纪念等文化在历史中交融。",
899
+ "sources": [{
900
+ "title": "春节古时称“元旦”",
901
+ "publisher": "北京市人民政府",
902
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
903
+ "accessedAt": "2026-10-25"
904
+ }, {
905
+ "title": "“我们的节日”东城区非遗主题系列活动——腊八节",
906
+ "publisher": "北京市东城区人民政府",
907
+ "url": "https://www.bjdch.gov.cn/zwgk/jgdh/qzfzcbmdh/qwhhlyj/ggfwxxgk/202401/t20240124_3544532.html",
908
+ "accessedAt": "2026-10-25"
909
+ }]
910
+ },
911
+ "customs": {
912
+ "text": "喝腊八粥,北方部分地区泡腊八蒜。",
913
+ "sources": [{
914
+ "title": "春节古时称“元旦”",
915
+ "publisher": "北京市人民政府",
916
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
917
+ "accessedAt": "2026-10-25"
918
+ }, {
919
+ "title": "“我们的节日”东城区非遗主题系列活动——腊八节",
920
+ "publisher": "北京市东城区人民政府",
921
+ "url": "https://www.bjdch.gov.cn/zwgk/jgdh/qzfzcbmdh/qwhhlyj/ggfwxxgk/202401/t20240124_3544532.html",
922
+ "accessedAt": "2026-10-25"
923
+ }]
924
+ }
925
+ },
926
+ {
927
+ "id": "little-new-year-north",
928
+ "name": "小年(北)",
929
+ "rule": {
930
+ "calendar": "lunar",
931
+ "month": 12,
932
+ "day": 23
933
+ },
934
+ "description": {
935
+ "text": "北方不少地区在腊月二十三过小年。",
936
+ "sources": [{
937
+ "title": "春节古时称“元旦”",
938
+ "publisher": "北京市人民政府",
939
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
940
+ "accessedAt": "2026-10-25"
941
+ }]
942
+ },
943
+ "origin": {
944
+ "text": "与传统祭灶活动相联系;灶神上天的故事属于民间信仰与传说。",
945
+ "sources": [{
946
+ "title": "春节古时称“元旦”",
947
+ "publisher": "北京市人民政府",
948
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
949
+ "accessedAt": "2026-10-25"
950
+ }]
951
+ },
952
+ "customs": {
953
+ "text": "祭灶、扫尘、准备年货等,各地并不完全相同。",
954
+ "sources": [{
955
+ "title": "春节古时称“元旦”",
956
+ "publisher": "北京市人民政府",
957
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
958
+ "accessedAt": "2026-10-25"
959
+ }]
960
+ }
961
+ },
962
+ {
963
+ "id": "little-new-year-south",
964
+ "name": "小年(南)",
965
+ "rule": {
966
+ "calendar": "lunar",
967
+ "month": 12,
968
+ "day": 24
969
+ },
970
+ "description": {
971
+ "text": "南方部分地区在腊月二十四过小年。",
972
+ "sources": [{
973
+ "title": "春节古时称“元旦”",
974
+ "publisher": "北京市人民政府",
975
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
976
+ "accessedAt": "2026-10-25"
977
+ }]
978
+ },
979
+ "origin": {
980
+ "text": "各地的小年日期并不统一,与地方祭灶传统有关。",
981
+ "sources": [{
982
+ "title": "春节古时称“元旦”",
983
+ "publisher": "北京市人民政府",
984
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
985
+ "accessedAt": "2026-10-25"
986
+ }]
987
+ },
988
+ "customs": {
989
+ "text": "祭灶、扫尘、准备过年。",
990
+ "sources": [{
991
+ "title": "春节古时称“元旦”",
992
+ "publisher": "北京市人民政府",
993
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
994
+ "accessedAt": "2026-10-25"
995
+ }]
996
+ }
997
+ },
998
+ {
999
+ "id": "new-years-eve",
1000
+ "name": "除夕",
1001
+ "rule": { "calendar": "lunar-eve" },
1002
+ "description": {
1003
+ "text": "农历一年的最后一天,可能是腊月二十九或三十。",
1004
+ "sources": [{
1005
+ "title": "春节",
1006
+ "publisher": "北京市人民政府",
1007
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cj/202303/t20230314_2936365.html",
1008
+ "accessedAt": "2026-10-25"
1009
+ }]
1010
+ },
1011
+ "origin": {
1012
+ "text": "是辞旧迎新年节文化的重要组成部分,与家族团聚和岁末仪式相联系。",
1013
+ "sources": [{
1014
+ "title": "春节",
1015
+ "publisher": "北京市人民政府",
1016
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cj/202303/t20230314_2936365.html",
1017
+ "accessedAt": "2026-10-25"
1018
+ }]
1019
+ },
1020
+ "customs": {
1021
+ "text": "吃年夜饭、守岁,迎接新年。",
1022
+ "sources": [{
1023
+ "title": "春节",
1024
+ "publisher": "北京市人民政府",
1025
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/cj/202303/t20230314_2936365.html",
1026
+ "accessedAt": "2026-10-25"
1027
+ }]
1028
+ }
1029
+ },
1030
+ {
1031
+ "id": "qingming",
1032
+ "name": "清明节",
1033
+ "rule": {
1034
+ "calendar": "solar-term",
1035
+ "term": "清明"
1036
+ },
1037
+ "description": {
1038
+ "text": "兼具节气与传统节日性质,日期随当年清明节气确定。",
1039
+ "sources": [{
1040
+ "title": "清明节",
1041
+ "publisher": "北京市人民政府",
1042
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/qmj/202303/t20230303_2928277.html",
1043
+ "accessedAt": "2026-10-25"
1044
+ }]
1045
+ },
1046
+ "origin": {
1047
+ "text": "在岁时发展中融合祭祖、寒食等文化传统。",
1048
+ "sources": [{
1049
+ "title": "清明节",
1050
+ "publisher": "北京市人民政府",
1051
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/qmj/202303/t20230303_2928277.html",
1052
+ "accessedAt": "2026-10-25"
1053
+ }]
1054
+ },
1055
+ "customs": {
1056
+ "text": "扫墓追思、踏青、插柳等。",
1057
+ "sources": [{
1058
+ "title": "清明节",
1059
+ "publisher": "北京市人民政府",
1060
+ "url": "https://www.beijing.gov.cn/renwen/zt/wmdjr/qmj/202303/t20230303_2928277.html",
1061
+ "accessedAt": "2026-10-25"
1062
+ }]
1063
+ }
1064
+ },
1065
+ {
1066
+ "id": "new-year",
1067
+ "name": "元旦",
1068
+ "rule": {
1069
+ "calendar": "solar",
1070
+ "month": 1,
1071
+ "day": 1
1072
+ },
1073
+ "description": {
1074
+ "text": "公历新年的第一天。",
1075
+ "sources": [{
1076
+ "title": "春节古时称“元旦”",
1077
+ "publisher": "北京市人民政府",
1078
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
1079
+ "accessedAt": "2026-10-25"
1080
+ }]
1081
+ },
1082
+ "origin": {
1083
+ "text": "“元旦”在古代曾指传统历法岁首,采用公历后与春节名称逐渐区分。",
1084
+ "sources": [{
1085
+ "title": "春节古时称“元旦”",
1086
+ "publisher": "北京市人民政府",
1087
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
1088
+ "accessedAt": "2026-10-25"
1089
+ }]
1090
+ },
1091
+ "customs": {
1092
+ "text": "以不同形式迎接新年,具体放假日期以年度公告为准。",
1093
+ "sources": [{
1094
+ "title": "春节古时称“元旦”",
1095
+ "publisher": "北京市人民政府",
1096
+ "url": "https://www.beijing.gov.cn/renwen/pjsx/201902/t20190201_1874837.html",
1097
+ "accessedAt": "2026-10-25"
1098
+ }]
1099
+ }
1100
+ },
1101
+ {
1102
+ "id": "valentines",
1103
+ "name": "情人节",
1104
+ "rule": {
1105
+ "calendar": "solar",
1106
+ "month": 2,
1107
+ "day": 14
1108
+ },
1109
+ "description": {
1110
+ "text": "每年二月十四日,常以卡片等方式表达情感。",
1111
+ "sources": [{
1112
+ "title": "Valentine’s Day",
1113
+ "publisher": "British Council",
1114
+ "url": "https://learnenglish.britishcouncil.org/sites/podcasts/files/LearnEnglish-Magazine-Valentines-Day.pdf",
1115
+ "accessedAt": "2026-10-25"
1116
+ }]
1117
+ },
1118
+ "origin": {
1119
+ "text": "与名为瓦伦丁的圣人有关的传说有不同版本,确切历史并不完全明确。",
1120
+ "sources": [{
1121
+ "title": "Valentine’s Day",
1122
+ "publisher": "British Council",
1123
+ "url": "https://learnenglish.britishcouncil.org/sites/podcasts/files/LearnEnglish-Magazine-Valentines-Day.pdf",
1124
+ "accessedAt": "2026-10-25"
1125
+ }]
1126
+ },
1127
+ "customs": {
1128
+ "text": "赠送或制作情人节卡片。",
1129
+ "sources": [{
1130
+ "title": "Valentine’s Day",
1131
+ "publisher": "British Council",
1132
+ "url": "https://learnenglish.britishcouncil.org/sites/podcasts/files/LearnEnglish-Magazine-Valentines-Day.pdf",
1133
+ "accessedAt": "2026-10-25"
1134
+ }]
1135
+ }
1136
+ },
1137
+ {
1138
+ "id": "womens-day",
1139
+ "name": "妇女节",
1140
+ "rule": {
1141
+ "calendar": "solar",
1142
+ "month": 3,
1143
+ "day": 8
1144
+ },
1145
+ "description": {
1146
+ "text": "国际妇女节,关注妇女权利与性别平等。",
1147
+ "sources": [{
1148
+ "title": "国际妇女节:节日历史",
1149
+ "publisher": "联合国",
1150
+ "url": "https://www.un.org/zh/events/womensday/history.shtml",
1151
+ "accessedAt": "2026-10-25"
1152
+ }]
1153
+ },
1154
+ "origin": {
1155
+ "text": "与二十世纪初争取妇女权益的运动有关,后发展为国际性纪念日。",
1156
+ "sources": [{
1157
+ "title": "国际妇女节:节日历史",
1158
+ "publisher": "联合国",
1159
+ "url": "https://www.un.org/zh/events/womensday/history.shtml",
1160
+ "accessedAt": "2026-10-25"
1161
+ }]
1162
+ },
1163
+ "customs": {
1164
+ "text": "举办讨论、宣传和纪念活动,关注妇女与女童的平等权利。",
1165
+ "sources": [{
1166
+ "title": "国际妇女节:节日历史",
1167
+ "publisher": "联合国",
1168
+ "url": "https://www.un.org/zh/events/womensday/history.shtml",
1169
+ "accessedAt": "2026-10-25"
1170
+ }]
1171
+ }
1172
+ },
1173
+ {
1174
+ "id": "april-fools",
1175
+ "name": "愚人节",
1176
+ "rule": {
1177
+ "calendar": "solar",
1178
+ "month": 4,
1179
+ "day": 1
1180
+ },
1181
+ "description": {
1182
+ "text": "每年四月一日的民间节日。",
1183
+ "sources": [{
1184
+ "title": "愚人節",
1185
+ "publisher": "教育部《重編國語辭典修訂本》",
1186
+ "url": "https://dict.revised.moe.edu.tw/dictView.jsp?ID=163313&la=0&powerMode=0",
1187
+ "accessedAt": "2026-10-25"
1188
+ }]
1189
+ },
1190
+ "origin": {
1191
+ "text": "确切起源未有定论,不宜把单一改历传说当作确定历史。",
1192
+ "sources": [{
1193
+ "title": "愚人節",
1194
+ "publisher": "教育部《重編國語辭典修訂本》",
1195
+ "url": "https://dict.revised.moe.edu.tw/dictView.jsp?ID=163313&la=0&powerMode=0",
1196
+ "accessedAt": "2026-10-25"
1197
+ }]
1198
+ },
1199
+ "customs": {
1200
+ "text": "以玩笑、趣味消息等方式娱乐。",
1201
+ "sources": [{
1202
+ "title": "愚人節",
1203
+ "publisher": "教育部《重編國語辭典修訂本》",
1204
+ "url": "https://dict.revised.moe.edu.tw/dictView.jsp?ID=163313&la=0&powerMode=0",
1205
+ "accessedAt": "2026-10-25"
1206
+ }]
1207
+ }
1208
+ },
1209
+ {
1210
+ "id": "labour-day",
1211
+ "name": "劳动节",
1212
+ "rule": {
1213
+ "calendar": "solar",
1214
+ "month": 5,
1215
+ "day": 1
1216
+ },
1217
+ "description": {
1218
+ "text": "国际劳动节,纪念劳动者争取权益的努力。",
1219
+ "sources": [{
1220
+ "title": "五一国际劳动节的由来",
1221
+ "publisher": "淄博市财政局",
1222
+ "url": "https://sczj.zibo.gov.cn/art/2017/5/25/art_725_368844.html",
1223
+ "accessedAt": "2026-10-25"
1224
+ }]
1225
+ },
1226
+ "origin": {
1227
+ "text": "与十九世纪工人争取八小时工作制的运动有关。",
1228
+ "sources": [{
1229
+ "title": "五一国际劳动节的由来",
1230
+ "publisher": "淄博市财政局",
1231
+ "url": "https://sczj.zibo.gov.cn/art/2017/5/25/art_725_368844.html",
1232
+ "accessedAt": "2026-10-25"
1233
+ }]
1234
+ },
1235
+ "customs": {
1236
+ "text": "举办纪念与庆祝活动,具体放假调休以年度公告为准。",
1237
+ "sources": [{
1238
+ "title": "五一国际劳动节的由来",
1239
+ "publisher": "淄博市财政局",
1240
+ "url": "https://sczj.zibo.gov.cn/art/2017/5/25/art_725_368844.html",
1241
+ "accessedAt": "2026-10-25"
1242
+ }]
1243
+ }
1244
+ },
1245
+ {
1246
+ "id": "childrens-day",
1247
+ "name": "儿童节",
1248
+ "rule": {
1249
+ "calendar": "solar",
1250
+ "month": 6,
1251
+ "day": 1
1252
+ },
1253
+ "description": {
1254
+ "text": "六一国际儿童节,关注儿童权益与成长。",
1255
+ "sources": [{
1256
+ "title": "儿童节节日简介",
1257
+ "publisher": "国家卫生健康委员会",
1258
+ "url": "https://www.nhc.gov.cn/jnr/etjjrjj/etj_lmtt.shtml",
1259
+ "accessedAt": "2026-10-25"
1260
+ }]
1261
+ },
1262
+ "origin": {
1263
+ "text": "1949 年国际民主妇女联合会决定以六月一日为国际儿童节,我国随后采用这一日期。",
1264
+ "sources": [{
1265
+ "title": "儿童节节日简介",
1266
+ "publisher": "国家卫生健康委员会",
1267
+ "url": "https://www.nhc.gov.cn/jnr/etjjrjj/etj_lmtt.shtml",
1268
+ "accessedAt": "2026-10-25"
1269
+ }]
1270
+ },
1271
+ "customs": {
1272
+ "text": "举办适合儿童的庆祝和关爱活动。",
1273
+ "sources": [{
1274
+ "title": "儿童节节日简介",
1275
+ "publisher": "国家卫生健康委员会",
1276
+ "url": "https://www.nhc.gov.cn/jnr/etjjrjj/etj_lmtt.shtml",
1277
+ "accessedAt": "2026-10-25"
1278
+ }]
1279
+ }
1280
+ },
1281
+ {
1282
+ "id": "national-day",
1283
+ "name": "国庆节",
1284
+ "rule": {
1285
+ "calendar": "solar",
1286
+ "month": 10,
1287
+ "day": 1
1288
+ },
1289
+ "description": {
1290
+ "text": "中华人民共和国国庆日。",
1291
+ "sources": [{
1292
+ "title": "关于中华人民共和国国庆日的决议",
1293
+ "publisher": "国务院港澳事务办公室",
1294
+ "url": "https://www.hmo.gov.cn/2026/08/21/ARTIZZHLS5A3wMrwgN0VL4Qw260821.shtml",
1295
+ "accessedAt": "2026-10-25"
1296
+ }]
1297
+ },
1298
+ "origin": {
1299
+ "text": "1949 年十二月通过的决议明确以十月一日为国庆日。",
1300
+ "sources": [{
1301
+ "title": "关于中华人民共和国国庆日的决议",
1302
+ "publisher": "国务院港澳事务办公室",
1303
+ "url": "https://www.hmo.gov.cn/2026/08/21/ARTIZZHLS5A3wMrwgN0VL4Qw260821.shtml",
1304
+ "accessedAt": "2026-10-25"
1305
+ }]
1306
+ },
1307
+ "customs": {
1308
+ "text": "举行纪念与庆祝活动;放假调休具体安排另见年度公告。",
1309
+ "sources": [{
1310
+ "title": "关于中华人民共和国国庆日的决议",
1311
+ "publisher": "国务院港澳事务办公室",
1312
+ "url": "https://www.hmo.gov.cn/2026/08/21/ARTIZZHLS5A3wMrwgN0VL4Qw260821.shtml",
1313
+ "accessedAt": "2026-10-25"
1314
+ }]
1315
+ }
1316
+ },
1317
+ {
1318
+ "id": "christmas",
1319
+ "name": "圣诞节",
1320
+ "rule": {
1321
+ "calendar": "solar",
1322
+ "month": 12,
1323
+ "day": 25
1324
+ },
1325
+ "description": {
1326
+ "text": "基督教纪念耶稣诞生的节日,许多教会于十二月二十五日庆祝。",
1327
+ "sources": [{
1328
+ "title": "Solemnity of the Nativity of Our Lord or Christmas",
1329
+ "publisher": "Vatican News",
1330
+ "url": "https://www.vaticannews.va/en/liturgical-holidays/solemnity-of-the-nativity-of-our-lord-or-christmas.html",
1331
+ "accessedAt": "2026-10-25"
1332
+ }]
1333
+ },
1334
+ "origin": {
1335
+ "text": "十二月二十五日的庆祝传统在教会历史中逐步形成,日期并非已确定的历史生日。",
1336
+ "sources": [{
1337
+ "title": "Solemnity of the Nativity of Our Lord or Christmas",
1338
+ "publisher": "Vatican News",
1339
+ "url": "https://www.vaticannews.va/en/liturgical-holidays/solemnity-of-the-nativity-of-our-lord-or-christmas.html",
1340
+ "accessedAt": "2026-10-25"
1341
+ }]
1342
+ },
1343
+ "customs": {
1344
+ "text": "参加节日礼仪、布置圣诞马槽等;不同地区传统不同。",
1345
+ "sources": [{
1346
+ "title": "Solemnity of the Nativity of Our Lord or Christmas",
1347
+ "publisher": "Vatican News",
1348
+ "url": "https://www.vaticannews.va/en/liturgical-holidays/solemnity-of-the-nativity-of-our-lord-or-christmas.html",
1349
+ "accessedAt": "2026-10-25"
1350
+ }]
1351
+ }
1352
+ }
1353
+ ]
1354
+ };
1355
+ //#endregion
1356
+ //#region src/schema.ts
1357
+ function isISODate(value) {
1358
+ if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}$/.test(value)) return false;
1359
+ const date = /* @__PURE__ */ new Date(`${value}T00:00:00Z`);
1360
+ return Number.isFinite(date.getTime()) && date.toISOString().slice(0, 10) === value;
1361
+ }
1362
+ function object(value) {
1363
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1364
+ }
1365
+ function source(value) {
1366
+ if (!object(value) || typeof value.title !== "string" || typeof value.publisher !== "string" || !isISODate(value.accessedAt) || typeof value.url !== "string") return false;
1367
+ try {
1368
+ return ["https:", "http:"].includes(new URL(value.url).protocol);
1369
+ } catch {
1370
+ return false;
1371
+ }
1372
+ }
1373
+ function sources(value) {
1374
+ return Array.isArray(value) && value.every(source);
1375
+ }
1376
+ function sourcedText(value) {
1377
+ return object(value) && typeof value.text === "string" && sources(value.sources) && Array.isArray(value.sources) && value.sources.length > 0;
1378
+ }
1379
+ function validateHolidayYear(value) {
1380
+ if (!object(value) || value.schemaVersion !== 1 || !Number.isInteger(value.year) || !isISODate(value.updatedAt) || !sources(value.sources) || !Array.isArray(value.days)) throw new TypeError("年度节假日 JSON 格式不正确");
1381
+ const dates = /* @__PURE__ */ new Set();
1382
+ for (const day of value.days) {
1383
+ if (!object(day) || !isISODate(day.date) || typeof day.name !== "string" || typeof day.isOffDay !== "boolean" || Math.abs(Number(day.date.slice(0, 4)) - Number(value.year)) > 1 || dates.has(day.date)) throw new TypeError("节假日日期无效、重复或放假/补班冲突");
1384
+ dates.add(day.date);
1385
+ }
1386
+ }
1387
+ function validateHolidayData(value) {
1388
+ if (!object(value) || value.schemaVersion !== 1 || !isISODate(value.updatedAt) || !Array.isArray(value.years) || !Array.isArray(value.festivals)) throw new TypeError("节假日 JSON 格式不正确");
1389
+ const years = /* @__PURE__ */ new Set();
1390
+ for (const year of value.years) {
1391
+ validateHolidayYear(year);
1392
+ if (years.has(year.year)) throw new TypeError("节假日年份重复");
1393
+ years.add(year.year);
1394
+ }
1395
+ const ids = /* @__PURE__ */ new Set();
1396
+ for (const festival of value.festivals) {
1397
+ if (!object(festival) || typeof festival.id !== "string" || ids.has(festival.id) || typeof festival.name !== "string" || !object(festival.rule) || !sourcedText(festival.description) || !sourcedText(festival.origin) || !sourcedText(festival.customs)) throw new TypeError("节日资料必须包含介绍、渊源、习俗及各自来源");
1398
+ const rule = festival.rule;
1399
+ if (rule.calendar === "lunar" || rule.calendar === "solar") {
1400
+ const maxDay = rule.calendar === "lunar" ? 30 : 31;
1401
+ if (!Number.isInteger(rule.month) || Number(rule.month) < 1 || Number(rule.month) > 12 || !Number.isInteger(rule.day) || Number(rule.day) < 1 || Number(rule.day) > maxDay) throw new TypeError("节日日期规则无效");
1402
+ } else if (rule.calendar === "solar-term") {
1403
+ if (typeof rule.term !== "string" || !rule.term) throw new TypeError("节气规则无效");
1404
+ } else if (rule.calendar !== "lunar-eve") throw new TypeError("未知节日日期规则");
1405
+ ids.add(festival.id);
1406
+ }
1407
+ }
1408
+ /** 接受 JSON.parse 后的对象,也接受年度文件;年度输入不会替换其他年份。 */
1409
+ function parseHolidayData(value) {
1410
+ if (object(value) && "year" in value) {
1411
+ validateHolidayYear(value);
1412
+ return {
1413
+ schemaVersion: 1,
1414
+ updatedAt: value.updatedAt,
1415
+ years: [value],
1416
+ festivals: []
1417
+ };
1418
+ }
1419
+ validateHolidayData(value);
1420
+ return value;
1421
+ }
1422
+ function mergeHolidayData(base, custom) {
1423
+ const input = parseHolidayData(custom);
1424
+ const years = new Map(base.years.map((year) => [year.year, year]));
1425
+ const festivals = new Map(base.festivals.map((festival) => [festival.id, festival]));
1426
+ for (const year of input.years) years.set(year.year, year);
1427
+ for (const festival of input.festivals) festivals.set(festival.id, festival);
1428
+ return {
1429
+ schemaVersion: 1,
1430
+ updatedAt: input.updatedAt,
1431
+ years: [...years.values()].sort((a, b) => a.year - b.year),
1432
+ festivals: [...festivals.values()]
1433
+ };
1434
+ }
1435
+ //#endregion
1436
+ //#region src/index.ts
1437
+ const holidayData = parseHolidayData(data_default);
1438
+ function getHolidayYear(year) {
1439
+ return holidayData.years.find((item) => item.year === year) ?? null;
1440
+ }
1441
+ //#endregion
1442
+ export { getHolidayYear, holidayData, isISODate, mergeHolidayData, parseHolidayData, validateHolidayData, validateHolidayYear };
1443
+
1444
+ //# sourceMappingURL=index.mjs.map