Lightweight library to convert quickly between IANA, Windows, and Rails time zone names.
Branch: master
Clone or download
Latest commit ebce11b Dec 21, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Add POSIX support Dec 21, 2018
test Add POSIX support Dec 21, 2018
.gitattributes Add .gitignore and .gitattributes. Jan 25, 2017
.gitignore Add .gitignore and .gitattributes. Jan 25, 2017
LICENSE.txt Initial Commit Jan 28, 2017
README.md Update README.md Dec 21, 2018
TimeZoneConverter.sln Add POSIX support Dec 21, 2018

README.md

TimeZoneConverter NuGet Version

TimeZoneConverter.Posix NuGet Version


  • TimeZoneConverter is a lightweight library to convert quickly between IANA, Windows, and Rails time zone names.
  • TimeZoneConverter.Posix adds support for generating POSIX time zone strings, which are useful in certain scenarios such as IoT.

TimeZoneConverter Installation

PM> Install-Package TimeZoneConverter

This library should be compatible with .NET Standard 1.1 and greater, as well as .NET Framework 3.5 and greater. See the .NET Standard Platform Support Matrix for further details about .NET Standard, and please raise an issue if you encounter any compatibility errors.

TimeZoneConverter.Posix Installation

PM> Install-Package TimeZoneConverter.Posix

This library should be compatible with .NET Standard 1.3 and greater, as well as .NET Framework 4.5 and greater. See the .NET Standard Platform Support Matrix for further details about .NET Standard, and please raise an issue if you encounter any compatibility errors.

Note that TimeZoneConverter.Posix takes a dependency on both TimeZoneConverter and Noda Time.

Notes

This library uses a combination of data sources to achieve its goals:

Usually, the latter is reserved for edge cases, and for newly-introduced zones that may or may not have been published to official sources yet.

Important: Since this data can change whenever new time zones are introduced from any of these sources, it is recommended that you always use the most current revision, and check for updates regularly.

Additionally, this library does not attempt to determine if the time zone IDs provided are actually present on the computer where the code is running. It is assumed that the computer is kept current with time zone updates.

For example, if one attempts to convert Africa/Khartoum to a Windows time zone ID, they will get Sudan Standard Time. If it is then used on a Windows computer that does not yet have KB4051956 installed (which created this time zone), they will likely get a TimeZoneNotFoundException.

Example Usage

Convert an IANA time zone name to the best fitting Windows time zone ID.

string tz = TZConvert.IanaToWindows("America/New_York");
// Result:  "Eastern Standard Time"

Convert a Windows time zone name to the best fitting IANA time zone name.

string tz = TZConvert.WindowsToIana("Eastern Standard Time");
// result:  "America/New_York"

Convert a Windows time zone name to the best fitting IANA time zone name, with regard to a specific country.

string tz = TZConvert.WindowsToIana("Eastern Standard Time", "CA");
// result:  "America/Toronto"

Get a TimeZoneInfo object from .NET Core, regardless of what OS you are running on:
Helps with .NET CoreFX issue #11897
This function is only available for .NET Standard 1.3+ or full .NET Framework targets

// Either of these will work on any platform:
TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("Eastern Standard Time");
TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("America/New_York");

Convert a Rails time zone name to the best fitting IANA time zone name.

string tz = TZConvert.RailsToIana("Mexico City");
// result:  "America/Mexico_City"

Convert a Rails time zone name to the best fitting Windows time zone ID.

string tz = TZConvert.RailsToWindows("Mexico City");
// result:  "Central Standard Time (Mexico)"

Convert an IANA time zone name to one or more Rails time zone names.

IList<string> tz = TZConvert.IanaToRails("America/Mexico_City");
// Result:  { "Guadalajara", "Mexico City" }

Convert a Windows time zone ID to one or more Rails time zone names.

IList<string> tz = TZConvert.WindowsToRails("Central Standard Time (Mexico)");
// Result:  { "Guadalajara", "Mexico City" }

Generate a POSIX time zone string from a Windows time zone ID.

Requires TimeZoneConverter.Posix

string posix = PosixTimeZone.FromWindowsTimeZoneId("Eastern Standard Time");
// Result: "EST5EDT,M3.2.0,M11.1.0"

Generate a POSIX time zone string from an IANA time zone name.

Requires TimeZoneConverter.Posix

string posix = PosixTimeZone.FromIanaTimeZoneName("Australia/Sydney");
// Result: "AEST-10AEDT,M10.1.0,M4.1.0/3"

Generate a POSIX time zone string from a TimeZoneInfo object.

Requires TimeZoneConverter.Posix

string posix = PosixTimeZone.FromTimeZoneInfo(TimeZoneInfo.Local);

License

This library is provided free of charge, under the terms of the MIT license.