Wednesday, 7 November 2012

Noda Time v1.0 released

Go get Noda Time 1.0!

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 comments.

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 :)


  1. One interesting question for me is:
    How would I store a Noda Time in SQL Server?

  2. This is great! Thanks a lot for all this work. This was absolutely needed.

  3. Jon, msmvps links seems dead by the way.

  4. This comment has been removed by a blog administrator.

  5. This is great! Thanks a lot for all this work. This was absolutely needed.
    gclub จีคลับ
    gclub casino

  6. More essential, the get-in cost — that $1,909 ticket — is currently a large portion of the McGregor vs Mayweather Live cost of a similar ticket from when Mayweather battled Manny Pacquiao in 2015. So, it's still about $800 more than the least expensive ticket for Mayweather's battle with Saul "Canelo" Alvarez in 2013 ($1,187) and effortlessly dominates the $632 sticker price of the most reduced value situate at McGregor's most costly battle: A matchup with Eddie Alvarez in September.
    Be that as it may, the countless tickets staying at any cost will probably leave this battle far shy of the $72,198,500 door record set by Mayweather-Pacquiao in 2015. The McGregor vs Mayweather Live Stream climate in Las Vegas may not satisfy that Mayweather-Pacquiao session, either. As the Associated Press reports , there are still a lot of rooms accessible online in the $300 to $400 territory at different inns, including those possessed by T-Mobile Arena proprietor MGM Grand.
    Mayweather vs McGregor
    Mayweather vs McGregor Live
    Mayweather vs McGregor Live Stream
    Mayweather vs McGregor Live PPV