Skip to content

Commit

Permalink
Change Sasana Year Calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
chanmratekoko committed Jan 13, 2024
1 parent a7c3a4c commit 8d9ba18
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 12 deletions.
8 changes: 4 additions & 4 deletions src/main/java/mmcalendar/MyanmarCalendarKernel.java
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ public static String getCalendarHeader(int myear, int mmonth, Language language)
* Waso=4, Wagaung=5, Tawthalin=6, Thadingyut=7, Tazaungmon=8,
* Nadaw=9, Pyatho=10, Tabodwe=11, Tabaung=12, Late Tagu=13
* Late Kason=14 ]
* @param mday day of month [from 1 to 29 or 30]
* @param mday day of month [from 1 to 29 or 30]
* @param language Language
* @return Calendar Title for month
*/
Expand Down Expand Up @@ -189,9 +189,9 @@ private static String getCalendarHeader(MyanmarDate startDateOfMonth, MyanmarDat

if (endDateOfMonth.getYearValue() >= 2) {
//if Myanmar year after 2 ME
str.append(" ")
str.append(language.getPunctuationMark())
.append(getHeaderForMyanmarYear(startDateOfMonth, endDateOfMonth, language))
.append(" ");
.append(language.getPunctuationMark());

str.append(getHeaderForMyanmarMonth(startDateOfMonth, endDateOfMonth, language));
}
Expand All @@ -207,7 +207,7 @@ public static String getHeaderForBuddhistEra(MyanmarDate startDate, MyanmarDate
.append(" ")
.append(startDate.getBuddhistEra(language));

if (startDate.getYearValue() != endDate.getYearValue()) {
if (startDate.getBuddhistEraValue() != endDate.getBuddhistEraValue()) {
buddhistEraStringBuilder.append(" - ")
.append(endDate.getBuddhistEra(language));
}
Expand Down
9 changes: 7 additions & 2 deletions src/main/java/mmcalendar/MyanmarDate.java
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ public static MyanmarDate of(double julianDayNumber) {

//-----------------------------------------------------------------------
public String getBuddhistEra(Language language) {
return LanguageTranslator.translate(myear + 1182.0, language);
return LanguageTranslator.translate(getBuddhistEraValue(), language);
}

public String getBuddhistEra() {
Expand Down Expand Up @@ -347,7 +347,8 @@ public static MyanmarDate of(int year, int month, int day, int hour, int minute,
}

public int getBuddhistEraValue() {
return myear + 1182;
int buddhistEraOffset = (mmonth == 1 || (mmonth == 2 && monthDay < 16)) ? 1181 : 1182;
return myear + buddhistEraOffset;
}

public String getYear(Language language) {
Expand Down Expand Up @@ -456,20 +457,23 @@ public int lengthOfMonth() {
}

/**
* Day of the month represented
* @return month day [1 to 30]
*/
public int getDayOfMonth() {
return monthDay;
}

/**
* Month Type
* @return month type [1 = hnaung, 0 = Oo]
*/
public int getMonthType() {
return monthType;
}

/**
* Fortnight Day Value
* @return fortnight day [1 to 15],
*/
public int getFortnightDayValue() {
Expand All @@ -485,6 +489,7 @@ public String getFortnightDay(Language language) {
}

/**
* Week day value
* @return week day [0=sat, 1=sun, ..., 6=fri]
*/
public int getWeekDayValue() {
Expand Down
8 changes: 4 additions & 4 deletions src/test/java/mmcalendar/MyanmarCalendarKernelTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,14 @@ public void calculateRelatedMyanmarMonths() {
@Test
public void getCalendarHeaderForWesternStyle() {
String head = MyanmarCalendarKernel.getCalendarHeaderForWesternStyle(2024, 4);
String actual = "သာသနာနှစ် ၂၅၆၇ - ၂၅၆၈ ခု မြန်မာနှစ် ၁၃၈၅ - ၁၃၈၆ ခု တပေါင်း - တန်ခူး";
String actual = "သာသနာနှစ် ၂၅၆၇ ခု၊ မြန်မာနှစ် ၁၃၈၅ - ၁၃၈၆ ခု တပေါင်း - တန်ခူး";
Assert.assertEquals(actual, head);
}

@Test
public void getCalendarHeader() {
String head = MyanmarCalendarKernel.getCalendarHeader(1380, 2);
String actual = "သာသနာနှစ် ၂၅၆၁ - ၂၅၆၂ ခု မြန်မာနှစ် ၁၃၇၉ - ၁၃၈၀ ခု နှောင်းကဆုန် - ကဆုန်";
String actual = "သာသနာနှစ် ၂၅၆၁ - ၂၅၆၂ ခု မြန်မာနှစ် ၁၃၇၉ - ၁၃၈၀ ခု နှောင်းကဆုန် - ကဆုန်";
Assert.assertEquals(actual, head);
}

Expand All @@ -107,7 +107,7 @@ public void getCalendarHeader2() {
String monthName = "Tagu";
int monthIndex = MyanmarDateKernel.searchMyanmarMonthNumber(monthName);
String head = MyanmarCalendarKernel.getCalendarHeader(1385, monthIndex);
String actual = "သာသနာနှစ် ၂၅၆၆ - ၂၅၆၇ ခု မြန်မာနှစ် ၁၃၈၄ - ၁၃၈၅ ခု နှောင်းတန်ခူး - တန်ခူး";
String actual = "သာသနာနှစ် ၂၅၆၆ ခု၊ မြန်မာနှစ် ၁၃၈၄ - ၁၃၈၅ ခု နှောင်းတန်ခူး - တန်ခူး";
Assert.assertEquals(actual, head);
}

Expand All @@ -116,7 +116,7 @@ public void getHeaderForBuddhistEra() {
MyanmarDate startDate = MyanmarDate.of(2024, 1, 1);
MyanmarDate endDate = MyanmarDate.of(2024, 4, 30);
String head = MyanmarCalendarKernel.getHeaderForBuddhistEra(startDate, endDate, Language.MYANMAR);
String actual = "သာသနာနှစ် ၂၅၆၇ - ၂၅၆၈ ခု";
String actual = "သာသနာနှစ် ၂၅၆၇ ခု";
Assert.assertEquals(actual, head);
}

Expand Down
2 changes: 1 addition & 1 deletion src/test/java/mmcalendar/MyanmarDateTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public void hashEqual(){
@Test
public void startMyanmarDate() {
MyanmarDate myanmarDate = MyanmarDate.of(1954900.0);
String expected = "သာသနာနှစ် ၁၁၈၄ ခု, မြန်မာနှစ် ၂ ခု, တန်ခူး လဆုတ် ၁၁ ရက် ကြာသပတေး နေ့";
String expected = "သာသနာနှစ် ၁၁၈၃ ခု, မြန်မာနှစ် ၂ ခု, တန်ခူး လဆုတ် ၁၁ ရက် ကြာသပတေး နေ့";
assertEquals(expected, myanmarDate.toString());
assertEquals("0640-03-23", myanmarDate.toMyanmarLocalDate().toString());

Expand Down
2 changes: 1 addition & 1 deletion src/test/java/mmcalendar/MyanmarThingyanDateTimeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public void create() {
// Myanmar New Year's Day (နှစ်ဆန်းတစ်ရက်နေ့)
MyanmarDate myanmarNewYearDate = myanmarThingyanDateTime.getMyanmarNewYearDay();

String acturl = "သာသနာနှစ် ၂၅၆၈ ခု, မြန်မာနှစ် ၁၃၈၆ ခု, တန်ခူး လဆန်း ၉ ရက် ဗုဒ္ဓဟူး နေ့";
String acturl = "သာသနာနှစ် ၂၅၆၇ ခု, မြန်မာနှစ် ၁၃၈၆ ခု, တန်ခူး လဆန်း ၉ ရက် ဗုဒ္ဓဟူး နေ့";
assertEquals(acturl, myanmarNewYearDate.toString());

ZonedDateTime zonedDateTime = myanmarThingyanDateTime.getAkyaTime().toMyanmarZonedDateTime();
Expand Down

0 comments on commit 8d9ba18

Please sign in to comment.