Go get Noda Time 1.0!
- NuGet package (and the testing package)
- Project home page
- Project downloads page
- v1.0 user guide
- v1.0 API reference
Today is the end of the longest release cycle I’ve been personally involved in. On November 5th 2009, I announced my intention to write a port of Joda Time for .NET. The next day, Noda Time was born – with a lofty (foolhardy) set of targets.
Near the end of a talk *about* Noda Time this evening, I released Noda Time 1.0.0.
It’s taken three years, but I’m immensely proud of what we’ve managed to achieve. We’re far from "done" but I believe we’re already significantly ahead of most other date/time APIs I’ve seen in terms of providing a clean API which reduces *incidental* complexity while highlighting the *inherent* complexity of the domain. (This is a theme I’m becoming dogmatic about on various fronts.)
There’s more to do – I can’t see myself considering Noda Time to be "done" any time soon – but hopefully now we’ve got a stable release, we can start to build user momentum.
One point I raised at the DotNetDevNet presentation tonight was that there’s a definite benefit (in my very biased view) in just *looking into* Noda Time:
- If you can’t use it in your production code, use it when prototyping
- If you can’t use it in your prototype code, play with it in personal projects
- If you can’t use it in personal projects, read the user guide to understand the concepts
I hope that simply looking at the various types that Noda Time providers will give you more insight into how you should be thinking about date and time handling in your code. While the BCL API has a lot of flaws, you can work around most of them if you make it crystal clear what your data means at every step. The type system will leave that largely ambiguous, but there’s nothing to stop you from naming your variables descriptively, and adding appropriate
Of course, I would far prefer it if you’d start using Noda Time and raising issues on how to make it better. Spread the word.
Oh, and if anyone from the BCL team is reading this and would like to include something like Noda Time into .NET 5 as a "next generation" date/time, I’d be *really* interested in talking to you :)
13 thoughts on “Noda Time v1.0 released”
This is great news, Jon. I will definitely be using Noda Time in our research projects and perhaps in some production code as well.
Ay plans to add support for fuzzy date/time management as described here? http://stackoverflow.com/q/6927181/210818
Thanks for the hard work!
Job well done! This is such a pain point in development and Noda Time is a giant step in the direction of relieving that pain.
This is great news and couldn’t have come at a better time for me. I’m working on a project that was originally UK only and now has to be international.
I didn’t want to simply use DateTimeOffset because of the issues around daylight savings time, etc, so I will definitely be incorporating Noda Time into my project.
Thanks for all your commitment!
Good grief, he codes as well as helping the world sort out their .NET/C# issues. Looking forward to checking this out.
Is Noda Time based of Joda Time or JSR 310 which addresses some “flaws” in Joda Time?
See https://codeblog.jonskeet.uk/2012/11/07/noda-time-v1-0-released for Stephen Colebourne’s overview of the differences.
A triumph. Congratulations.
@Matthew: It’s based on Joda Time. 310 wasn’t mature enough when we started.
It’s more based on the Joda Time engine with a new API on top though – and I suspect it’s a better fit. My understanding of JSR-310 is that it’s rather more complex, trying to solve *all* time problems, forever. We’re deliberately limiting ourselves to trying to solve the problems of 99% of business developers.
Cool. A couple API requests.
1. It would be nice if Instant.FromUtc(…) supported milliseconds or at least fractional seconds.
2. Any reason why you force the use of Utc in Instant.FromDateTimeUtc? why not Instant.FromDateTime(…) you can convert the parameter to UTC internally. I imagine a lot of users of the code will simply write Intanct.FromDateTimeUtc(dateTime.ToUniversalTime())
p.s. You captcha doesn’t seem to be rendering in my version(23.0.1271.64 m) of Chrome for some reason.
@Matthew: Please log API requests on the project page – it’s a much saner forum to discuss these things :)
The CAPTCHA thing is a known issue that I can’t do anything about other than moving blog hosts…
Thank you Jon, I’ll definitely look into this!
Nice to hear this! Jon, have you tried this version of NodaTime on Mono 3? I think some of the flaws you pointed out a while ago have been fixed, though I would like to know for sure.
@Marcelo: No, I haven’t yet – although I have reasonable hopes that it will solve at least some of the problems. I’m waiting for a stable binary to download…