@@ -29,17 +29,20 @@ private HolidayCalculator() {
29
29
* <a href="https://en.wikipedia.org/wiki/Chinese_New_Year">Chinese New Year</a>
30
30
*/
31
31
private static final int [] GH_CHINESE_NEW_YEAR = {2456689 , 2456690 , 2457073 , 2457074 , 2457427 , 2457428 , 2457782 ,
32
- 2457783 , 2458166 , 2458167 };
32
+ 2457783 , 2458166 , 2458520 , 2458874 , 2459257 , 2459612 , 2459967 , 2460351 ,
33
+ 2460705 , 2461089 , 2461443 , 2461797 , 2462181 , 2462536 };
33
34
34
35
/**
35
36
* Diwali (ghDiwali)
36
37
*/
37
- private static final int [] GH_DIWALI = {2456599 , 2456953 , 2457337 , 2457691 , 2458045 , 2458429 };
38
+ private static final int [] GH_DIWALI = {2456599 , 2456953 , 2457337 , 2457691 , 2458045 , 2458430 , 2458784 , 2459168 ,
39
+ 2459523 , 2459877 };
38
40
39
41
/**
40
42
* EID ghEid
41
43
*/
42
- private static final int [] GH_EID = {2456513 , 2456867 , 2457221 , 2457576 , 2457930 , 2458285 };
44
+ private static final int [] GH_EID = {2456513 , 2456867 , 2457221 , 2457576 , 2457930 , 2458285 , 2458640 , 2459063 ,
45
+ 2459416 , 2459702 , 2460125 , 2460261 };
43
46
44
47
/**
45
48
* Check for English Holiday
@@ -53,25 +56,25 @@ static List<String> englishHoliday(int gy, int gm, int gd) {
53
56
54
57
List <String > holiday = new ArrayList <>();
55
58
56
- if (gy >= 2018 && gm == 1 && gd == 1 ) {
57
- holiday .add ("New Year Day" );
59
+ if (( gy >= 2018 && gy <= 2021 ) && gm == 1 && gd == 1 ) {
60
+ holiday .add ("New Year's Day" );
58
61
} else if (gy >= 1948 && gm == 1 && gd == 4 ) {
59
62
holiday .add ("Independence Day" );
60
63
} else if (gy >= 1947 && gm == 2 && gd == 12 ) {
61
64
holiday .add ("Union Day" );
62
65
} else if (gy >= 1958 && gm == 3 && gd == 2 ) {
63
- holiday .add ("Peasants Day" );
66
+ holiday .add ("Peasants' Day" );
64
67
} else if (gy >= 1945 && gm == 3 && gd == 27 ) {
65
68
holiday .add ("Resistance Day" );
66
69
} else if (gy >= 1923 && gm == 5 && gd == 1 ) {
67
70
holiday .add ("Labour Day" );
68
71
} else if (gy >= 1947 && gm == 7 && gd == 19 ) {
69
- holiday .add ("Martyrs Day" );
72
+ holiday .add ("Martyrs' Day" );
70
73
} else if (gm == 12 && gd == 25 ) {
71
74
holiday .add ("Christmas Day" );
72
75
} else if (gy == 2017 && gm == 12 && gd == 30 ) {
73
76
holiday .add ("Holiday" );
74
- } else if (gy >= 2017 && gm == 12 && gd == 31 ) {
77
+ } else if (( gy >= 2017 && gy <= 2021 ) && gm == 12 && gd == 31 ) {
75
78
holiday .add ("Holiday" );
76
79
}
77
80
@@ -108,7 +111,7 @@ else if ((mmonth == 7) && (moonPhase == 1)) {
108
111
} else if ((myear >= 1282 ) && (mmonth == 8 ) && (monthDay == 25 )) {
109
112
holiday .add ("National Day" );
110
113
} else if ((mmonth == 10 ) && (monthDay == 1 )) {
111
- holiday .add ("Karen New Year Day" );
114
+ holiday .add ("Karen New Year's Day" );
112
115
} else if ((mmonth == 12 ) && (moonPhase == 1 )) {
113
116
holiday .add ("Tabaung Pwe" );
114
117
}
@@ -147,7 +150,7 @@ public static List<String> thingyan(double jdn, double myear, int monthType) {
147
150
atn = Math .round (ja );
148
151
149
152
if (Math .abs (jdn - (atn + 1 )) < 0.0000001 ) {
150
- holiday .add ("Myanmar New Year Day" );
153
+ holiday .add ("Myanmar New Year's Day" );
151
154
}
152
155
153
156
if ((myear + monthType ) >= bgntg ) {
@@ -162,6 +165,12 @@ public static List<String> thingyan(double jdn, double myear, int monthType) {
162
165
} else if (((myear + monthType ) >= 1369 ) && ((myear + monthType ) < 1379 )
163
166
&& ((jdn == (akn - 2 )) || ((jdn >= (atn + 2 )) && (jdn <= (akn + 7 ))))) {
164
167
holiday .add ("Holiday" );
168
+ } else if ((((myear + monthType ) >= 1384 ) && (myear + monthType ) <= 1385 )
169
+ && ((jdn == (akn - 5 )) || (jdn == (akn - 4 )) || (jdn == (akn - 3 )) || (jdn == (akn - 2 )))) {
170
+ holiday .add ("Holiday" );
171
+ } else if ((myear + monthType ) >= 1386
172
+ && (((jdn >= (atn + 2 )) && (jdn <= (akn + 7 ))))) {
173
+ holiday .add ("Holiday" );
165
174
}
166
175
}
167
176
@@ -188,6 +197,28 @@ public static List<String> getOtherHolidays(double jd) {
188
197
return holiday ;
189
198
}
190
199
200
+ private static List <String > getSubstituteHoliday (double jd ) {
201
+
202
+ List <String > holiday = new ArrayList <>();
203
+
204
+ int [] substituteHoliday = {
205
+ // 2019
206
+ 2458768 , 2458772 , 2458785 , 2458800 ,
207
+ // 2020
208
+ 2458855 , 2458918 , 2458950 , 2459051 , 2459062 ,
209
+ 2459152 , 2459156 , 2459167 , 2459181 , 2459184 ,
210
+ // 2021
211
+ 2459300 , 2459303 , 2459323 , 2459324 ,
212
+ 2459335 , 2459548 , 2459573 ,
213
+ };
214
+
215
+ if (BinarySearchUtil .search (jd , substituteHoliday ) >= 0 ) {
216
+ holiday .add ("Holiday" );
217
+ }
218
+
219
+ return holiday ;
220
+ }
221
+
191
222
/**
192
223
* Anniversary day
193
224
*
@@ -202,43 +233,43 @@ private static List<String> getAnniversaryDay(double jd, CalendarType calendarTy
202
233
calendarType = CalendarType .ENGLISH ;
203
234
}
204
235
205
- List <String > holiday = new ArrayList <>();
236
+ List <String > anniversary = new ArrayList <>();
206
237
207
238
WesternDate wd = WesternDate .of (jd , calendarType );
208
239
double doe = dateOfEaster (wd .getYear ());
209
240
210
241
if ((wd .getYear () <= 2017 ) && (wd .getMonth () == 1 ) && (wd .getDay () == 1 )) {
211
- holiday .add ("New Year Day" );
242
+ anniversary .add ("New Year Day" );
212
243
} else if ((wd .getYear () >= 1915 ) && (wd .getMonth () == 2 ) && (wd .getDay () == 13 )) {
213
- holiday .add ("G. Aung San BD" );
244
+ anniversary .add ("G. Aung San BD" );
214
245
} else if ((wd .getYear () >= 1969 ) && (wd .getMonth () == 2 ) && (wd .getDay () == 14 )) {
215
- holiday .add ("Valentines Day" );
246
+ anniversary .add ("Valentines Day" );
216
247
} else if ((wd .getYear () >= 1970 ) && (wd .getMonth () == 4 ) && (wd .getDay () == 22 )) {
217
- holiday .add ("Earth Day" );
248
+ anniversary .add ("Earth Day" );
218
249
} else if ((wd .getYear () >= 1392 ) && (wd .getMonth () == 4 ) && (wd .getDay () == 1 )) {
219
- holiday .add ("April Fools Day" );
250
+ anniversary .add ("April Fools' Day" );
220
251
} else if ((wd .getYear () >= 1948 ) && (wd .getMonth () == 5 ) && (wd .getDay () == 8 )) {
221
- holiday .add ("Red Cross Day" );
252
+ anniversary .add ("Red Cross Day" );
222
253
} else if ((wd .getYear () >= 1994 ) && (wd .getMonth () == 10 ) && (wd .getDay () == 5 )) {
223
- holiday .add ("World Teachers Day" );
254
+ anniversary .add ("World Teachers' Day" );
224
255
} else if ((wd .getYear () >= 1947 ) && (wd .getMonth () == 10 ) && (wd .getDay () == 24 )) {
225
- holiday .add ("United Nations Day" );
256
+ anniversary .add ("United Nations Day" );
226
257
} else if ((wd .getYear () >= 1753 ) && (wd .getMonth () == 10 ) && (wd .getDay () == 31 )) {
227
- holiday .add ("Halloween" );
258
+ anniversary .add ("Halloween" );
228
259
}
229
260
230
261
if ((wd .getYear () >= 1876 ) && (jd == doe )) {
231
- holiday .add ("Easter" );
262
+ anniversary .add ("Easter" );
232
263
} else if ((wd .getYear () >= 1876 ) && (jd == (doe - 2 ))) {
233
- holiday .add ("Good Friday" );
264
+ anniversary .add ("Good Friday" );
234
265
} else if (BinarySearchUtil .search (jd , GH_EID_2 ) >= 0 ) {
235
- holiday .add ("Eid" );
266
+ anniversary .add ("Eid" );
236
267
}
237
268
if (BinarySearchUtil .search (jd , GH_CHINESE_NEW_YEAR ) >= 0 ) {
238
- holiday .add ("Chinese New Year" );
269
+ anniversary .add ("Chinese New Year's " );
239
270
}
240
271
241
- return holiday ;
272
+ return anniversary ;
242
273
}
243
274
244
275
/**
@@ -284,12 +315,12 @@ private static List<String> getMyanmarAnniversaryDay(double myear, int mmonth, i
284
315
List <String > holiday = new ArrayList <>();
285
316
286
317
if ((myear >= 1309 ) && (mmonth == 11 ) && (monthDay == 16 )) {
287
- holiday .add ("Mon National Day" );
318
+ holiday .add ("' Mon' National Day" );
288
319
} // the ancient founding of Hanthawady
289
320
else if ((mmonth == 9 ) && (monthDay == 1 )) {
290
- holiday .add ("Shan New Year Day" );
321
+ holiday .add ("Shan New Year's Day" );
291
322
if (myear >= 1306 ) {
292
- holiday .add ("Authors Day" );
323
+ holiday .add ("Authors' Day" );
293
324
}
294
325
} // Nadaw waxing moon 1
295
326
else if ((mmonth == 3 ) && (moonPhase == 1 )) {
@@ -299,10 +330,10 @@ else if ((mmonth == 6) && (moonPhase == 1)) {
299
330
holiday .add ("Garudhamma Day" );
300
331
} // Tawthalin full moon
301
332
else if ((myear >= 1356 ) && (mmonth == 10 ) && (moonPhase == 1 )) {
302
- holiday .add ("Mothers Day" );
333
+ holiday .add ("Mothers' Day" );
303
334
} // Pyatho full moon
304
335
else if ((myear >= 1370 ) && (mmonth == 12 ) && (moonPhase == 1 )) {
305
- holiday .add ("Fathers Day" );
336
+ holiday .add ("Fathers' Day" );
306
337
} // Tabaung full moon
307
338
else if ((mmonth == 5 ) && (moonPhase == 1 )) {
308
339
holiday .add ("Metta Day" );
@@ -322,15 +353,24 @@ else if ((mmonth == 5) && (monthDay == 23)) {
322
353
* @return List of holiday String
323
354
*/
324
355
public static List <String > getHoliday (MyanmarDate myanmarDate ) {
325
- return getHoliday (myanmarDate , Config .getInstance ().getCalendarType ());
356
+ return getHoliday (myanmarDate , Config .getInstance ().getLanguage ());
357
+ }
358
+
359
+ /**
360
+ * @param myanmarDate MyanmarDate
361
+ * @param language Language
362
+ * @return List of holiday String
363
+ */
364
+ public static List <String > getHoliday (MyanmarDate myanmarDate , Language language ) {
365
+ return getHoliday (myanmarDate , Config .getInstance ().getCalendarType (), language );
326
366
}
327
367
328
368
/**
329
369
* @param myanmarDate MyanmarDate
330
370
* @param calendarType CalendarType
331
371
* @return List of holiday String
332
372
*/
333
- public static List <String > getHoliday (MyanmarDate myanmarDate , CalendarType calendarType ) {
373
+ public static List <String > getHoliday (MyanmarDate myanmarDate , CalendarType calendarType , Language language ) {
334
374
335
375
WesternDate westernDate = WesternDate .of (myanmarDate .getJulianDayNumber (), calendarType );
336
376
// Office Off
@@ -342,10 +382,18 @@ public static List<String> getHoliday(MyanmarDate myanmarDate, CalendarType cale
342
382
343
383
List <String > holiday = new ArrayList <>();
344
384
345
- holiday .addAll (hde );
346
- holiday .addAll (hdm );
347
- holiday .addAll (hdt );
348
- holiday .addAll (hdo );
385
+ holiday .addAll (LanguageTranslator .translateSentenceList (hde , Language .ENGLISH , language ));
386
+
387
+ holiday .addAll (LanguageTranslator .translateSentenceList (hdm , Language .ENGLISH , language ));
388
+
389
+ holiday .addAll (LanguageTranslator .translateSentenceList (hdt , Language .ENGLISH , language ));
390
+
391
+ holiday .addAll (LanguageTranslator .translateSentenceList (hdo , Language .ENGLISH , language ));
392
+
393
+ if (westernDate .getYear () >= 2019 && westernDate .getYear () <= 2021 ) {
394
+ List <String > substituteHoliday = getSubstituteHoliday (myanmarDate .getJulianDayNumber ());
395
+ holiday .addAll (LanguageTranslator .translateSentenceList (substituteHoliday , Language .ENGLISH , language ));
396
+ }
349
397
350
398
return holiday ;
351
399
}
@@ -363,24 +411,33 @@ public static boolean isHoliday(MyanmarDate myanmarDate) {
363
411
* @return List of holiday String
364
412
*/
365
413
public static List <String > getAnniversary (MyanmarDate myanmarDate ) {
366
- return getAnniversary (myanmarDate , Config .getInstance ().getCalendarType ());
414
+ return getAnniversary (myanmarDate , Config .getInstance ().getCalendarType (), Config .getInstance ().getLanguage ());
415
+ }
416
+
417
+ /**
418
+ * @param myanmarDate MyanmarDate Object
419
+ * @param language Language
420
+ * @return List of holiday String
421
+ */
422
+ public static List <String > getAnniversary (MyanmarDate myanmarDate , Language language ) {
423
+ return getAnniversary (myanmarDate , Config .getInstance ().getCalendarType (), language );
367
424
}
368
425
369
426
/**
370
427
* @param myanmarDate MyanmarDate
371
428
* @param calendarType CalendarType
372
429
* @return List of holiday String
373
430
*/
374
- public static List <String > getAnniversary (MyanmarDate myanmarDate , CalendarType calendarType ) {
431
+ public static List <String > getAnniversary (MyanmarDate myanmarDate , CalendarType calendarType , Language language ) {
375
432
List <String > ecd = getAnniversaryDay (myanmarDate .getJulianDayNumber (), calendarType ); // anniversary day
376
433
List <String > mcd = getMyanmarAnniversaryDay (myanmarDate .getYearValue (), myanmarDate .getMonth (), myanmarDate .getDayOfMonth (), myanmarDate .getMoonPhaseValue ());
377
434
378
- List <String > holiday = new ArrayList <>();
435
+ List <String > anniversary = new ArrayList <>();
379
436
380
- holiday .addAll (ecd );
381
- holiday .addAll (mcd );
437
+ anniversary .addAll (LanguageTranslator . translateSentenceList ( ecd , Language . ENGLISH , language ) );
438
+ anniversary .addAll (LanguageTranslator . translateSentenceList ( mcd , Language . ENGLISH , language ) );
382
439
383
- return holiday ;
440
+ return anniversary ;
384
441
}
385
442
386
443
}
0 commit comments