Installation

Our primary distribution channel is NuGet with three packages:

Alternatively, source and binary downloads are available on the project download page.

See the "Building and testing" section in the developer guide for instructions on building Noda Time from source.

System requirements

Noda Time 2.0 (and onwards) supports the Target Framework Monikers of netstandard1.3 and net45.

This means it should work for any desktop framework application targeting .NET 4.5 or later, as well as .NET Core and related frameworks. It does not support Windows 8 store apps, or Windows Phone (Silverlight or not) 8 apps. It does support UWP for Windows 10. See the .NET Standard Versions documentation for more details.

We have not tested Noda Time 2.0 against Xamarin or Unity; recent versions of Xamarin support .NET Standard so should be fine; Unity targeting .NET 2.0 won't work, but the 2017-onwards support for Mono 4.8 may just work. (Please report any problems you have and we can try to look into them.)

Package contents and getting started

Everything you need to use Noda Time is contained in the NodaTime package. The NodaTime.Testing package is designed for testing code which uses Noda Time. See the testing guide for more information. It is expected that production code will only refer to the NodaTime.dll assembly, and that's all that's required at execution time. This assembly includes the TZDB database as an embedded resource.

For Json.NET serialization, the NodaTime.Serialization.JsonNet package (containing a single assembly of the same name) is required, as well as an appropriate version of Json.NET itself. There is a NuGet dependency from NodaTime.Serialization.JsonNet to the newtonsoft.json package, so if you're using NuGet you just need to refer to NodaTime.Serialization.JsonNet and an appropriate version of Json.NET will be installed automatically. See the serialization guide for more information on using Noda Time with Json.NET.

Everything within the NodaTime assembly is in the NodaTime namespace or a "child" namespace. After adding a reference to the main assembly (either directly via the file system or with NuGet) and including an appropriate using directive, you should be able to start using Noda Time immediately, with no further effort.