Summary of new Japanese era updates for .NET Framework

Van toepassing: .NET Framework

This article applies to:

  • Microsoft .NET Framework 3.5 and later versions

About Japanese era updates


On May 1, 2019, the new era in the Japanese calendar will begin. Microsoft is preparing for these changes and plans to ship updates in each monthly rollup release. This is the first transition from one era to another since January 1989, and also the first in the history of .NET Framework. This Microsoft Knowledge Base article is intended to help developers test and verify how eras work in .NET applications, how applications are affected by the era change, and what you, as a developer, have to do to make sure that your applications handle the upcoming Japanese era changes successfully.

For more information about Windows updates for the Japanese era change, see Knowledge Base article 4469068.

.NET Framework updates


The following releases contain the Japanese era updates for .NET Framework. They also contain quality and reliability improvements.

Note For some versions of Windows, .NET Framework updates are delivered through a separate .NET Framework-specific cumulative update. For more information, see the following .NET Blog article:

Knowledge Base articles by .NET Framework version for Japanese era updates

The servicing updates that are listed in the following table contain all the Japanese era updates for .NET Framework that were already included in the previously released updates. The servicing updates also contain a new quality update that removes the dependency on single quotation marks to output the Gannen character in Japanese era formatting, so that either “y” or “y’'” of the custom date and time format string enable .NET Framework to format year number 1 to .  These updates are available on Windows Update, Windows Server Update Service (WSUS), and Windows Update Catalog.

Windows 10, version 1507 Windows 10, version 1607 (Anniversary Update) / Windows Server 2016 Windows 10, version 1703 (Creators Update) Windows 10, version 1709 (Fall Creators Update) Windows 10, version 1803 (April 2018 Update) Windows 10, version 1809 (October 2018 Update) / Windows Server 2019
4489872 4489889 4489888 4489890 4489894 4489192


Note Microsoft did not release a .NET Framework security and quality rollup for Windows 8.1 and earlier supported versions of Windows in March 2019. If you want to deploy the latest updates for .NET Framework that contain all the Japanese era updates for Windows 8.1 and earlier supported versions of Windows, see the “Changes for Security Only update customers” section.

Updated Microsoft released a .NET framework security and quality rollup for Windows 8.1 and earlier supported versions of Windows in May 2019 as below. All security and quality rollups released later to these updates will also contain Japanese era updates.

  Windows Server 2008 Windows 7 / Windows Server 2008 R2 Windows Server 2012 Windows 8.1 / Windows Server 2012 R2
.NET Framework 3.5 4495604 4495606 4480061 4495608
.NET Framework 4.5.2 4495596 4495596 4495594 4495592
.NET Framework 4.6 or later 4495588 4495588 4495582 4495585

Changes for Security Only update customers


This section is for customers who rely on the Security Only (SO) updates for Windows 8.1 and earilier versions of supported Windows.

Similar to the .NET Framework updates for Windows 10 that are listed in the previous section, the updates that are listed in the following table contain all the Japanese era updates for .NET Framework that were already included in previously released updates and a new quality update to remove the dependency on using single quotation marks to output the Gannen character in Japanese era formatting.

These updates don’t include any new security updates or new additional quality and reliability improvements that were not already included in previously released updates, except the update for the single quotation mark issue. Therefore, users who rely on the Security Only (SO) updates and the Monthly Rollup (MO) updates for Windows 8.1 and earlier supported versions of Windows can also select these updates for the new Japanese era. These updates are available through Windows Server Update Service (WSUS) and Windows Update Catalog only.

 

Windows Server 2008

Windows 7 / Windows Server 2008 R2

Windows Server 2012

Windows 8.1 / Windows Server 2012 R2

.NET Framework 3.5

4488661

4488662

4488660

4488663

.NET Framework 4.5.2

4488669

4488669

4488668

4488667

.NET Framework 4.6 or later

4488666

4488666

4488664

4488665

 

How to test the new Japanese era on .NET Framework


For all the versions of .NET Framework in the Knowledge Base articles table, and also for .NET Core running on Windows, calendar era information is provided by the Windows operating system and retrieved from the system registry when you apply the updates for .NET Framework. To make it easier for you to prepare for the Japanese era change, you can control when you add the placeholder registry entry to your systems, and choose the timing that meets your needs. Currently, the placeholder registry for the Windows operating system is supported for the following systems:

  • Windows Client: Windows 7 SP1 and later
  • Windows Server: Windows Server 2008 R2 SP1 and later


Note We will offer additional new Japanese era updates for Windows Server 2008 SP2 and Windows Embedded & IoT, Windows Embedded Compact 7 and later versions, Windows Embedded Standard/POSReady 7 and later versions, and Windows 10 IoT.

An update to Windows will add the new era value to the registry after the era name and abbreviated era name are known. .NET on Windows will automatically reflect this update.

Recommended test scenarios to cover


  • Relaxed era range checks

This test scenario is to verify LOB applications work when the new era transition is set to a future date.

A date in a particular era can “overflow” into the following era, and no ArgumentOutOfRangeException or FormatException is thrown by default. When you set the following value to true, you can restore strict era checks:

Switch.System.Globalization.EnforceJapaneseEraYearRanges

  • The first year of an era

This test scenario is to verify the Gannen (元年) convention in formatting operations as the first year of a new Japanese calendar era.

By default, .NET adopts the Gannen (元年) convention in formatting operations. You can restore the previous behavior. That behavior always represents the year as “1” instead of as Gannen (元年). To do this, set the following value to true:

Switch.System.Globalization.FormatJapaneseFirstYearAsANumber 

Japanese era supported features


Updating data source

Japanese era information was originally maintained as hard-coded data in .NET Framework 3.5 and lower versions of .NET Framework, however similarly to .NET Framework 4.0 and later, its source for Japanese era was changed from private hard-coded data to the registry key under [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras] registry path. The update for Windows will add the registry key for the new era after its name is announced.
 

Range-Relaxation

When Heisei (平成) Era ends on April 30th, 2019 which is Heisei (平成) 31, and the new era begins on May 1, 2019, “平成 31 5 1 ” becomes invalid. We have relaxed our parsers to allow the future/past dates (both Gregorian and Japanese dates) in .NET applications, to be converted into a relevant Japanese era date without throwing an exception such as ArgumentOutOfRangeException and System.FormatException. You will also be able to convert the future dates in Heisei to the new Japanese era once the new Japanese era name is announced. It can be disabled in .NET Framework. By setting the following value to true:

Switch.System.Globalization.EnforceJapaneseEraYearRanges
 

Gannen (元年) for the first year of Japanese era

In historical practice, for the first year of the era, a special character “Gan ()”, whose Kanji character means “origin” or “beginning”, is used in place of the number “Ichi (1)”. The first year “Gannen (元年)” continues until the end date of the Gregorian calendar year, December 31st. .NET Framework supports both “Gannen (元年)” and “Ichinen (1 )” for the first year of the era. For all the versions of .NET Framework, Gannen is ON by default. It can be disabled by setting the following value to true:

Switch.System.Globalization.FormatJapaneseFirstYearAsANumber

Previously released updates


Customers need only install the latest update listed above in the Knowledge Base articles by .NET Framework version for Japanese era updates section or those from Windows Update, Windows Server Update Service (WSUS), or Windows Update Catalog.

 

Windows Server 2008

Windows 7 / Windows Server 2008 R2

Windows Server 2012

Windows 8.1 / Windows Server 2012 R2

Windows 10 1507

Windows 10 1607 (Anniversary Update) /

Windows Server 2016

Windows 10 1703 (Creators Update)

Windows 10 1709 (Fall Creators Update)

Windows 10 1803 (April 2018 Update)

Windows 10 1809 (October 2018 Update)

Windows Server 2019


Updating data sources

.NET Framework 3.5

4457007

4457008

4457006

4457009

4471323

4457127

4457141

4457136

4458469

Unnecessary

Unnecessary

.NET Framework 4.5.2

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

.NET Framework 4.6 or later

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary

Unnecessary


Relaxed era range checks

.NET Framework 3.5

4457007

4457008

4457006

4457009

4471323

4457127

4457141

4457136

4458469

Unnecessary

Unnecessary

.NET Framework 4.5.2

4457019

4457019

4457018

4457017

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

.NET Framework 4.6 or later

4457016

4457016

4457014

4457015

4467680

4457127

4457141

4457136

4458469

Not applicable

Not applicable


The first year of an era

.NET Framework 3.5

4459933

4459934

4459932

4459935

4471323

4467691

4467696

4467686

4467702

4470502

4470502

.NET Framework 4.5.2

4459945

4459945

4459944

4459943

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

Not applicable

.NET Framework 4.6 or later

4459942

4459942

4459940

4459941

4467680

4467691

4467696

4467686

4467702

4470502

4470502

Additional resources