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

Published Wed, Nov 7 2012 23:36 by skeet
Filed under:

Comments

# re: 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? stackoverflow.com/.../210818

Wednesday, November 07, 2012 6:10 PM by CesarGon

# re: Noda Time v1.0 released

Congratulations Jon,

Thanks for the hard work!

Thursday, November 08, 2012 1:19 AM by Caspar Kleijne

# Congrats

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.

Thursday, November 08, 2012 3:10 AM by Rik Hemsley

# re: Noda Time v1.0 released

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!

Thursday, November 08, 2012 6:55 AM by Rob Kent

# re: Noda Time v1.0 released

Good grief, he codes as well as helping the world sort out their .NET/C# issues. Looking forward to checking this out.

Thursday, November 08, 2012 7:08 AM by David Dawkins

# re: Noda Time v1.0 released

Is Noda Time based of Joda Time or JSR 310 which addresses some "flaws" in Joda Time?

See msmvps.com/.../noda-time-v1-0-released.aspx for Stephen Colebourne's overview of the differences.

Thursday, November 08, 2012 8:58 AM by Matthew Schumaker

# re: Noda Time v1.0 released

A triumph. Congratulations.

Thursday, November 08, 2012 8:59 AM by Gordon Mackie

# re: Noda Time v1.0 released

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

Thursday, November 08, 2012 9:05 AM by skeet

# re: Noda Time v1.0 released

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.

Thursday, November 08, 2012 9:23 AM by Matthew Schumaker

# re: Noda Time v1.0 released

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

Thursday, November 08, 2012 9:36 AM by skeet

# re: Noda Time v1.0 released

Thank you Jon, I'll definitely look into this!

Friday, November 09, 2012 9:33 AM by Peter Porfy

# re: Noda Time v1.0 released

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.

Thanks!

Monday, November 19, 2012 10:58 PM by Marcelo Zabani

# re: Noda Time v1.0 released

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

Tuesday, November 20, 2012 12:54 AM by skeet