Moved all the Japanese Era logic inside the Year case of the switch statement

This commit is contained in:
Stephanie Anderl 2019-02-08 15:42:28 -08:00
parent 1bd4f1870c
commit 2fc8196104

View File

@ -273,17 +273,18 @@ bool DateCalculationEngine::TryGetCalendarDaysInYear(_In_ DateTime date, _Out_ U
// Adds/Subtracts certain value for a particular date unit // Adds/Subtracts certain value for a particular date unit
DateTime DateCalculationEngine::AdjustCalendarDate(Windows::Foundation::DateTime date, DateUnit dateUnit, int difference) DateTime DateCalculationEngine::AdjustCalendarDate(Windows::Foundation::DateTime date, DateUnit dateUnit, int difference)
{ {
auto currentCalendarSystem = m_calendar->GetCalendarSystem();
m_calendar->SetDateTime(date); m_calendar->SetDateTime(date);
switch (dateUnit) switch (dateUnit)
{ {
case DateUnit::Year: case DateUnit::Year:
{
// In the Japanese calendar, transition years have 2 partial years. // In the Japanese calendar, transition years have 2 partial years.
// It is not guaranteed that adding 1 year will always add 365 days in the Japanese Calendar. // It is not guaranteed that adding 1 year will always add 365 days in the Japanese Calendar.
// To work around this quirk, we will change the calendar system to Gregorian before adding 1 year in the Japanese Calendar case only. // To work around this quirk, we will change the calendar system to Gregorian before adding 1 year in the Japanese Calendar case only.
// We will then return the calendar system back to the Japanese Calendar. // We will then return the calendar system back to the Japanese Calendar.
auto currentCalendarSystem = m_calendar->GetCalendarSystem();
if (currentCalendarSystem == CalendarIdentifiers::Japanese) if (currentCalendarSystem == CalendarIdentifiers::Japanese)
{ {
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian); m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
@ -292,6 +293,7 @@ DateTime DateCalculationEngine::AdjustCalendarDate(Windows::Foundation::DateTime
m_calendar->AddYears(difference); m_calendar->AddYears(difference);
m_calendar->ChangeCalendarSystem(currentCalendarSystem); m_calendar->ChangeCalendarSystem(currentCalendarSystem);
break; break;
}
case DateUnit::Month: case DateUnit::Month:
m_calendar->AddMonths(difference); m_calendar->AddMonths(difference);
break; break;