mirror of
https://github.com/Microsoft/calculator.git
synced 2025-07-12 08:16:00 -07:00
Moved all the Japanese Era logic inside the Year case of the switch statement
This commit is contained in:
parent
1bd4f1870c
commit
2fc8196104
1 changed files with 20 additions and 18 deletions
|
@ -273,31 +273,33 @@ bool DateCalculationEngine::TryGetCalendarDaysInYear(_In_ DateTime date, _Out_ U
|
|||
// Adds/Subtracts certain value for a particular date unit
|
||||
DateTime DateCalculationEngine::AdjustCalendarDate(Windows::Foundation::DateTime date, DateUnit dateUnit, int difference)
|
||||
{
|
||||
auto currentCalendarSystem = m_calendar->GetCalendarSystem();
|
||||
|
||||
m_calendar->SetDateTime(date);
|
||||
|
||||
switch (dateUnit)
|
||||
{
|
||||
case DateUnit::Year:
|
||||
// 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.
|
||||
// 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.
|
||||
if (currentCalendarSystem == CalendarIdentifiers::Japanese)
|
||||
case DateUnit::Year:
|
||||
{
|
||||
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
|
||||
}
|
||||
// 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.
|
||||
// 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.
|
||||
auto currentCalendarSystem = m_calendar->GetCalendarSystem();
|
||||
if (currentCalendarSystem == CalendarIdentifiers::Japanese)
|
||||
{
|
||||
m_calendar->ChangeCalendarSystem(CalendarIdentifiers::Gregorian);
|
||||
}
|
||||
|
||||
m_calendar->AddYears(difference);
|
||||
m_calendar->ChangeCalendarSystem(currentCalendarSystem);
|
||||
break;
|
||||
case DateUnit::Month:
|
||||
m_calendar->AddMonths(difference);
|
||||
break;
|
||||
case DateUnit::Week:
|
||||
m_calendar->AddWeeks(difference);
|
||||
break;
|
||||
m_calendar->AddYears(difference);
|
||||
m_calendar->ChangeCalendarSystem(currentCalendarSystem);
|
||||
break;
|
||||
}
|
||||
case DateUnit::Month:
|
||||
m_calendar->AddMonths(difference);
|
||||
break;
|
||||
case DateUnit::Week:
|
||||
m_calendar->AddWeeks(difference);
|
||||
break;
|
||||
}
|
||||
|
||||
return m_calendar->GetDateTime();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue